Deutsch
Forum

Formatieren von Textenausgaben

 

KHR
Hallo miteinander

ich hab mal angefangen mit xprofan10 ein prgramm zu schreiben, das ich gern zur Arbeit nutzen möchte.

Mittlerweile läuft 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 Hilfe und anderen Testprogrammen. Ich habs aber aus dem großen 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
 
16.03.2008  
 



@Karl: Die Codesuche hilft Dir hier:  [...] 
 
16.03.2008  
 




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.
 
16.03.2008  
 




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 für 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  
 



Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

648 Betrachtungen

Unbenanntvor 0 min.
RudiB.13.08.2021
rquindt18.03.2018
Walter21.08.2017
Ernst12.07.2016
Mehr...

Themeninformationen



Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie