Foro | | | | KHR | Hallo miteinander
ich hab mal angefangen mit xprofan10 ein prgramm zu schreiben, das ich gern zur Arbeit nutzen möchte.
Mittlerweile corre ein großer Teil sehr gut aber mit den ersten Erweiterungen bin ich ziemlich uns trudeln geraten.
Hier als Beispiel ein´Tool, das ich zu benutzen gedenke: KompilierenMarkierenSeparieren
proc Durchsatzkalkulator
Declare titel$, EditDialog%, ok%, cancel%,EditDialogEnde%
Declare Edit1&,Edit2&,Edit3&,Edit4&,Edit5&,Edit6&,Edit7&
titel$ = Durchsatzkalkulator für Freifall
EditDialog%= @Create(Dialog,%HWnd,Titel$,130,90,600,450)
startpaint EditDialog%
cls Farbe_Grau%
TextColor Farbe_Schwarz%, Farbe_grau%
UseFont Arial,17,0,1,0,0
drawtext 20, 19,Maximaldurchsatz
drawtext 260, 19,t/h
drawtext 20, 44,Nominaldurchsatz
drawtext 260, 44,t/h
drawtext 20, 69,Schüttgewicht
drawtext 260, 69,g/l
drawtext 20, 94,Rohrdurchmesser
drawtext 260, 94,t/h
drawtext 20,119,Fallhöhe
drawtext 260,119,m
drawtext 20,144,Fixgeschwindigkeit
drawtext 260,144,m/s
OK% = @Create(Button, EditDialog%,&Berechnen , 20, 350, 80,30)
CANCEL% = @Create(Button, EditDialog%,&Ende , 200, 350, 80,30)
@SetFocus(edit1&)
EditDialogEnde% = 0
NewStyle& = ~BS_RIGHT | ~BS_VCENTER
@Set(NumWidth,4)
@Set(Decimals,3)
Edit1& = @Create(Edit,EditDialog%, @str$(D_calc_Max_Durchsatz!) , 170 , 15 , 80 , 20)
Edit2& = @Create(Edit,EditDialog%, @str$(D_calc_Nom_Durchsatz!) , 170 , 40 , 80 , 20)
@Set(NumWidth,2)
@Set(Decimals,0)
Edit3& = @Create(Edit,EditDialog%, @str$(d_calc_Schuettgewicht&) , 170 , 65 , 80 , 20)
Edit4& = @Create(Edit,EditDialog%, @str$(D_calc_Durchmesser&) , 170 , 90 , 80 , 20)
@Set(Decimals,1)
Edit5& = @Create(Edit,EditDialog%, @str$(D_calc_Fallhoehe!) , 170 ,115 , 80 , 20)
Edit6& = @Create(Edit,EditDialog%, @str$(D_calc_Fixgeschw!) , 170 ,140 , 80 , 20)
WhileNot EditDialogEnde%
WaitInput
Case @Clicked(CANCEL%):EditDialogEnde% = 1
If @Clicked(OK%)
TextColor Farbe_Schwarz%, Farbe_grau%
UseFont Arial,17,0,1,0,0
D_calc_Max_Durchsatz! = @val(@GetText$(Edit1&))
D_calc_Nom_Durchsatz! = @val(@GetText$(Edit2&))
d_calc_Schuettgewicht& = @val(@GetText$(Edit3&))
D_calc_Durchmesser& = @val(@GetText$(Edit4&))
D_calc_Fallhoehe! = @val(@GetText$(Edit5&))
D_calc_Fixgeschw! = @val(@GetText$(Edit6&))
d_calc_Fallgeschwindigkeit! = 2*9.80665*D_calc_Fallhoehe!
d_calc_Fallgeschwindigkeit! = @sqrt(d_calc_Fallgeschwindigkeit!)
d_calc_rohrflaeche! = ((D_calc_Durchmesser&/1000 /2) ^2 )*@pi()
d_calc_Max_fuellung! = D_calc_Max_Durchsatz! * 9.80665
d_calc_Max_fuellung! = d_calc_Max_fuellung! / (d_calc_Fallgeschwindigkeit!* d_calc_rohrflaeche!
*(d_calc_Schuettgewicht&*1000))
d_calc_Max_fuellung! = d_calc_Fallgeschwindigkeit!*(D_calc_Durchmesser&/2000)^2*@Pi()*(d_calc_Schuettgewicht&*1000)
d_calc_Nom_fuellung! = D_calc_Nom_Durchsatz! * 1000000/3600 /d_calc_Max_fuellung! * 100
d_calc_Max_fuellung! = D_calc_Max_Durchsatz! * 1000000/3600 /d_calc_Max_fuellung! * 100
drawtext 310, 94 , Querschnitt
drawtext 470, 94 , m²
drawtext 310,119 , Geschwind.
drawtext 470,119 , m/s
@Set(NumWidth,2)
@Set(Decimals,2)
@Create(Text,EditDialog%,Nominal , 200 , 234 , 80 , 20 )
@Create(Text,EditDialog%,Maximal , 280 , 234 , 80 , 20 )
@Create(Text,EditDialog%,Rohrfüllung ( % ) , 20 , 234 , 160 , 20 )
@Create(Text,EditDialog%,m/s , 100 , 259 , 40 , 20 )
@Create(Text,EditDialog%,m/s , 100 , 284 , 40 , 20 )
TextColor Text_farbe_2%, Farbe_grau%
UseFont Arial,17,0,1,0,0
@Set(NumWidth,1)
@Set(Decimals,5)
drawtext 400, 94,@str$(d_calc_rohrflaeche!)
@Set(NumWidth,3)
@Set(Decimals,2)
drawtext 400,119,@str$(d_calc_Fallgeschwindigkeit!)
drawtext 210,259,@str$(d_calc_Nom_fuellung!)
drawtext 290,259,@str$(d_calc_Max_fuellung!)
drawtext 40,284,@str$(D_calc_Fixgeschw! )
drawtext 40,259,@str$(d_calc_Fallgeschwindigkeit!)
ElseIf @Clicked(CANCEL%)
EditDialogEnde% = 1
EndIf
EndWhile
endpaint
@DestroyWindow(EditDialog%)
endproc
Variablen Durchsatzkalkulator
Declare D_calc_Max_Durchsatz!
Declare D_calc_Nom_Durchsatz!
Declare D_calc_Durchmesser&
Declare D_calc_Fallhoehe!
Declare D_calc_Fixgeschw!
declare d_calc_Max_fuellung!
declare d_calc_Nom_fuellung!
declare d_calc_Fix_fuellung!
declare d_calc_Fallgeschwindigkeit!
declare d_calc_Schuettgewicht&
declare d_calc_rohrflaeche!
Declare Text_Farbe_1%
Declare Text_Farbe_2%
Declare Farbe_weiss%
Declare Farbe_schwarz%
Declare Farbe_grau%
Text_Farbe_1% = @RGB(0,176,0)
Text_Farbe_2% = @RGB(0,0,230)
Farbe_weiss% = @RGB(255,255,255)
Farbe_schwarz% = @RGB(0,0,0)
Farbe_grau% = @RGB(220,220,220)
D_calc_Max_Durchsatz! = 300
D_calc_Nom_Durchsatz! = 200
d_calc_Schuettgewicht& =1100
D_calc_Durchmesser& = 200
D_calc_Fallhoehe! = 2
D_calc_Fixgeschw! = 4.75
cls
Durchsatzkalkulator
Ok Ok, das ist alles etwas ungeordnet und zusammengestückelt aus Fragmenten aus der Aiuto und anderen Testprogrammen. Ich habs aber aus dem grande ganzen rausschneiden müssen und der code zeigt auch noch recht gut verschiedene Versuchsstadien ( mix zwischen create(text..) und drawtext,) und und und .... Man verzeihe bitte einem Anfänger!
Mein Probleme sind:
wie bekomme ich per Drawtext eine ausgabe auf den rechten Rand ausgerichtet?
Kann ich die Texte immer wieder mit @Create(Text,..) in einer Schleife an der selben Bildschirmposition teste ausgeben oder stapels sich dann irgendwo im Hintergrund die Text-elemente ?
Was mach ich, daß sich nicht jedesmal die Hintergrundfarbe meines Dialogfensters auf Standard zurücksetzt, wenn es einmal im Hintergrund war.
Wieso verschwinden bei dieser Gelegenheit auch gleich die Drawtext-Ausgaben? |
| | | Gruß Karl-Heinz WIN XP home/Pro / XPROFAN 11 / P2CPP ATMEL + BASCOM Fan | 16.03.2008 ▲ |
| |
| | Rolf Koch | Hab nicht mehr viel Zeit grad, nur schnell zu Createtext: Nicht neu erstellen, sondern vorhandenes Textcontrol nutzen und neuen Text reinschreiben: Settext handle&,Neuer Text |
| | | | |
| | | @Karl: Die Codesuche hilft Dir hier: [...] |
| | | | |
| | Frank Abbing | Hallo Karl,
wie bekomme ich per Drawtext eine ausgabe auf den rechten Rand ausgerichtet?
Ich habe deinen Code dazu mal angepaßt: KompilierenMarkierenSeparieren
proc Durchsatzkalkulator
Declare titel$, EditDialog%, ok%, cancel%,EditDialogEnde%
Declare Edit1&,Edit2&,Edit3&,Edit4&,Edit5&,Edit6&,Edit7&
Declare hdc&
titel$ = Durchsatzkalkulator für Freifall
EditDialog%= @Create(Dialog,%HWnd,Titel$,130,90,600,450)
startpaint EditDialog%
hdc&=%hdc
cls Farbe_Grau%
TextColor Farbe_Schwarz%, Farbe_grau%
UseFont Arial,17,0,1,0,0
SetTextAlign(hdc&,0)
drawtext 20, 19,Maximaldurchsatz
drawtext 20, 44,Nominaldurchsatz
drawtext 20, 69,Schüttgewicht
drawtext 20, 94,Rohrdurchmesser
drawtext 20,119,Fallhöhe
drawtext 20,144,Fixgeschwindigkeit
SetTextAlign(hdc&,2)
drawtext 290, 19,t/h
drawtext 290, 44,t/h
drawtext 290, 69,g/l
drawtext 290, 94,t/h
drawtext 290,119,m
drawtext 290,144,m/s
OK% = @Create(Button, EditDialog%,&Berechnen , 20, 350, 80,30)
CANCEL% = @Create(Button, EditDialog%,&Ende , 200, 350, 80,30)
@SetFocus(edit1&)
EditDialogEnde% = 0
NewStyle& = ~BS_RIGHT | ~BS_VCENTER
@Set(NumWidth,4)
@Set(Decimals,3)
Edit1& = @Create(Edit,EditDialog%, @str$(D_calc_Max_Durchsatz!) , 170 , 15 , 80 , 20)
Edit2& = @Create(Edit,EditDialog%, @str$(D_calc_Nom_Durchsatz!) , 170 , 40 , 80 , 20)
@Set(NumWidth,2)
@Set(Decimals,0)
Edit3& = @Create(Edit,EditDialog%, @str$(d_calc_Schuettgewicht&) , 170 , 65 , 80 , 20)
Edit4& = @Create(Edit,EditDialog%, @str$(D_calc_Durchmesser&) , 170 , 90 , 80 , 20)
@Set(Decimals,1)
Edit5& = @Create(Edit,EditDialog%, @str$(D_calc_Fallhoehe!) , 170 ,115 , 80 , 20)
Edit6& = @Create(Edit,EditDialog%, @str$(D_calc_Fixgeschw!) , 170 ,140 , 80 , 20)
WhileNot EditDialogEnde%
WaitInput
Case @Clicked(CANCEL%):EditDialogEnde% = 1
If @Clicked(OK%)
TextColor Farbe_Schwarz%, Farbe_grau%
UseFont Arial,17,0,1,0,0
D_calc_Max_Durchsatz! = @val(@GetText$(Edit1&))
D_calc_Nom_Durchsatz! = @val(@GetText$(Edit2&))
d_calc_Schuettgewicht& = @val(@GetText$(Edit3&))
D_calc_Durchmesser& = @val(@GetText$(Edit4&))
D_calc_Fallhoehe! = @val(@GetText$(Edit5&))
D_calc_Fixgeschw! = @val(@GetText$(Edit6&))
d_calc_Fallgeschwindigkeit! = 2*9.80665*D_calc_Fallhoehe!
d_calc_Fallgeschwindigkeit! = @sqrt(d_calc_Fallgeschwindigkeit!)
d_calc_rohrflaeche! = ((D_calc_Durchmesser&/1000 /2) ^2 )*@pi()
d_calc_Max_fuellung! = D_calc_Max_Durchsatz! * 9.80665
d_calc_Max_fuellung! = d_calc_Max_fuellung! / (d_calc_Fallgeschwindigkeit!* d_calc_rohrflaeche!
*(d_calc_Schuettgewicht&*1000))
d_calc_Max_fuellung! = d_calc_Fallgeschwindigkeit!*(D_calc_Durchmesser&/2000)^2*@Pi()*(d_calc_Schuettgewicht&*1000)
d_calc_Nom_fuellung! = D_calc_Nom_Durchsatz! * 1000000/3600 /d_calc_Max_fuellung! * 100
d_calc_Max_fuellung! = D_calc_Max_Durchsatz! * 1000000/3600 /d_calc_Max_fuellung! * 100
drawtext 310, 94 , Querschnitt
drawtext 470, 94 , m²
drawtext 310,119 , Geschwind.
drawtext 470,119 , m/s
@Set(NumWidth,2)
@Set(Decimals,2)
@Create(Text,EditDialog%,Nominal , 200 , 234 , 80 , 20 )
@Create(Text,EditDialog%,Maximal , 280 , 234 , 80 , 20 )
@Create(Text,EditDialog%,Rohrfüllung ( % ) , 20 , 234 , 160 , 20 )
@Create(Text,EditDialog%,m/s , 100 , 259 , 40 , 20 )
@Create(Text,EditDialog%,m/s , 100 , 284 , 40 , 20 )
TextColor Text_farbe_2%, Farbe_grau%
UseFont Arial,17,0,1,0,0
@Set(NumWidth,1)
@Set(Decimals,5)
drawtext 400, 94,@str$(d_calc_rohrflaeche!)
@Set(NumWidth,3)
@Set(Decimals,2)
drawtext 400,119,@str$(d_calc_Fallgeschwindigkeit!)
drawtext 210,259,@str$(d_calc_Nom_fuellung!)
drawtext 290,259,@str$(d_calc_Max_fuellung!)
drawtext 40,284,@str$(D_calc_Fixgeschw! )
drawtext 40,259,@str$(d_calc_Fallgeschwindigkeit!)
ElseIf @Clicked(CANCEL%)
EditDialogEnde% = 1
EndIf
EndWhile
endpaint
@DestroyWindow(EditDialog%)
endproc
DEF SetTextAlign(2) ! gdi32,SetTextAlign
Variablen Durchsatzkalkulator
Declare D_calc_Max_Durchsatz!
Declare D_calc_Nom_Durchsatz!
Declare D_calc_Durchmesser&
Declare D_calc_Fallhoehe!
Declare D_calc_Fixgeschw!
declare d_calc_Max_fuellung!
declare d_calc_Nom_fuellung!
declare d_calc_Fix_fuellung!
declare d_calc_Fallgeschwindigkeit!
declare d_calc_Schuettgewicht&
declare d_calc_rohrflaeche!
Declare Text_Farbe_1%
Declare Text_Farbe_2%
Declare Farbe_weiss%
Declare Farbe_schwarz%
Declare Farbe_grau%
Text_Farbe_1% = @RGB(0,176,0)
Text_Farbe_2% = @RGB(0,0,230)
Farbe_weiss% = @RGB(255,255,255)
Farbe_schwarz% = @RGB(0,0,0)
Farbe_grau% = @RGB(220,220,220)
D_calc_Max_Durchsatz! = 300
D_calc_Nom_Durchsatz! = 200
d_calc_Schuettgewicht& =1100
D_calc_Durchmesser& = 200
D_calc_Fallhoehe! = 2
D_calc_Fixgeschw! = 4.75
cls
Durchsatzkalkulator
Kann ich die Texte immer wieder mit @Create(Text,..) in einer Schleife an der selben Bildschirmposition teste ausgeben oder stapels sich dann irgendwo im Hintergrund die Text-elemente ?
Ja, die stapeln sich dann. Du kannst benutzte Controls aber mit DestroyWindow(controlhandle&) jederzeit freigeben. Ich würde aber feste Controls benutzen und nicht ständig neue generieren.
Was mach ich, daß sich nicht jedesmal die Hintergrundfarbe meines Dialogfensters auf Standard zurücksetzt, wenn es einmal im Hintergrund war.
Die einfachste Möglichkeit ist es, deine Controls und Texte direkt auf dem Hauptfenster zu zeichnen. Und gar kein Dialogfenster zu benutzen.
Wieso verschwinden bei dieser Gelegenheit auch gleich die Drawtext-Ausgaben?
Für das Neuzeichen auf Dialogfenstern ist der Programmierer selbst zuständig. Beim Hauptfenster hilft dir XProfan. Darum mein Tipp mit dem Hauptfenster. |
| | | | |
| | Jörg Sellmeyer | Ich würde an Deiner Stelle auch die DrawText-Ausgaben mit einem Textcontrol (Create(Text,...)) erledigen. Erspart Dir das ständige neuzeichnen. Wenn Du mit Create(Text,...) ein Textcontrol erstellst mußt Du Dir das Handle speichern. Dann kannst Du jederzeit den Text ändern: KompilierenMarkierenSeparieren |
| | | Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 16.03.2008 ▲ |
| |
| | KHR | Hallo miteinander
danke per Eure Zeit und Eure Antworten,
Jetzt wird mir da schon einiges klarer. Aus den Codesnippets hab ich mir dann auch noch einiges zusammengesucht. Irgedwie hab ich zuvor immer nach den falschen Begriffen gesucht. Man muß mit jedem Werkzeug halt umgehen lernen,
ok - normalerweise arbeite ich auch mit handles bei create(TEXTE.... habs aber beim zusammenschustern übersehen und nicht dran gedacht, daß sich eine meiner Fragen bei richtigem Umgang mit der Sprache schon erledigt hat.
Mittlerweile sieht das ganze bei mir nun schon viel besser aus |
| | | Gruß Karl-Heinz WIN XP home/Pro / XPROFAN 11 / P2CPP ATMEL + BASCOM Fan | 16.03.2008 ▲ |
| |
|
AnswerThemeninformationenDieses Thema hat 5 subscriber: |