Italia
Fonte/ Codesnippets

Beispiele Boxen Dialoge Erstellen Verschiedene

 

KompilierenMarkierenSeparieren
Source wurde am 15.07.2007 aus der MMJ-Quellcodesammlung (Dietmar Horn) in die Babyklappe auf XProfan.Com abgelegt:
Dialoge erstellen  - Beispiele für verschiedene Boxen und deren Auswertung
Lauffähig ab Profan-Version 5.0
Beispiele verschiedener Boxen und die Auswertung derselben. Für Profan 6.6.
Version 2.1  11.12.2001.      Das Programm kann frei benutzt werden, für
Schäden kann keine Haftung übernommen werden.
Autor: Gerhard Putschalka    zum Teil unter Verwendung von Ideen die in der Mailingliste
bzw. im Profanboard angeboten wurden.
email: g.putschalka@web.de
homepage: http://members.telering.at/g.putschalka/index.html
In diesem Programm ist zu beachten, daß nicht jede Aktion bei einem Objekt ein Ereignis
auslöst das die Kontrolle an das Programm übergibt.
Es ist daher wichtig zu wissen wie Aktionen des Benutzers (z.B. anklicken einer Zeile in
einer Listbox, oder Eingabe von Daten in ein Editfeld) ausgewertet werden.
Folgende Objekte werden hier angewendet:
Listboxen (Dialoge in sortierter und unsortierter Form), Standardlistbox, Auswahlboxen
(als ComboBox in unsortierter Form und auch mit einem Eingabefähigen Feld), Standardaus-
wahlbox (welche den Inhalt immer in sortierter Form anzeigt), Checkbox, Radiobuttons
verbunden mit einer Groupbox, ein einfaches Edit (Eingabefeld), ein MultiEdit (mehrzeilige
Eingabebox und ein Control bei dem Werte ausgewählt werden können, wobei unterster und
oberster Wert festgelegt werden.
Bei einer Listbox werden auch Tabulatoren gesetzt um bei der Anzeige Kolonnen zu bilden.
bei den Listboxen gibt es 2 Arten: den fertigen Listboxdialog (mit @ListBox$ erstellt und
wird nur in der Prozedur MakeListBox benutzt) und Listboxen die mit Create... erstellt
werden.
======================================
Declare _ende%,_dlg%,Lbox%,SBox%,ABox%,EBox%,UBox%,EFeld%,Ende%,Bok%,EndPrt%
Declare Zeile%,Zeile$,Inx%,Ecb%,Libx%,Ra1%,Ra2%,Ra3%,ChBx%,SkpCtl&,SkpEdt&,Tabs#
======================================
Def CreateUpDownCtl(12) !COMCTL32,CreateUpDownControl
Def GetUpDownHdl(1) SendMessage(@&(1),1130,0,0)
======================================
anzeigen der Inhalte der Objekte, die bei Änderung kein Ereignis auslösen. Diese Prozedur
wird über einen Button aufgerufen.
Es betrifft die Inhalte der Objekte in der rechten Dialoghälfte: EditChoiceBox, EditBox
(MultiEdit), Eingabefeld (einfaches Edit) und Auf/Ab Box.

Proc ZeigeFelder

    Declare Text$
    1. ausgew. Zeile der EditChoiceBox anzeigen
    Let Zeile$ = @GetText$(Ecb%)
    Print EditChoiceBox:  ,Zeile$
    2. Alle Zeilen der Editbox (CreateMultiEdit, Mehrzeiliges-Eingabefeld) anzeigen
    Let Zeile% = @Sub(@GetLineCount(EBox%),1)
    Let Inx% = 0
    Let Text$ = EditBox:

    While @Lt(Inx%,Zeile%)

        Let Zeile$ = @GetLine$(EBox%,Inx%)
        Print Text$,Zeile$
        Let Text$ =
        Inc Inx%

    EndWhile

    3. Zeile des Eingabefeldes (CreateEdit) anzeigen
    Let Zeile$ = @GetText$(Efeld%)
    Print Eing. Feld:     ,Zeile$
    4. Wert der Auf/Ab Box anzeigen
    Let Zeile$ = @GetText$(SkpEdt&)
    Print Auf/Ab Wert:    ,Zeile$
    5. wurde der Ende-Button gedrückt werden hier auch noch die Auswahlen der RadioButtons
    und der CheckBox angezeigt (dies ist nur zusätzlich, da sie direkt eine Ereignis
    auslösen und somit sofort angezeigt werden).

    If EndPrt%

        If @getCheck(Ra1%)

            Print R-Button:       ,rot

        ElseIf @getCheck(Ra2%)

            Print R-Button:       ,blau

        ElseIf @getCheck(Ra3%)

            Print R-Button:       ,grün

        EndIf

        If @getCheck(ChBx%)

            Print CheckBox:       ,JaJa

        Else

            Print CheckBox:       ,Nein

        EndIf

    EndIf

    Return

EndProc

=======================================
fertigen Listboxdialog erstellen, anzeigen und Auswahl sofort anzeigen. Wird durch den
Button ListBox ausgelöst.
Die Auswahl in der Listbox ist auch mit Doppelklick möglich.
Diese Art der Listbox verwendet nur die einfache Listboxliste und ist nicht zu verwechseln
mit den Listboxen die mit Create... erstellt werden.

Proc MakeListBox                         fertiger ListBoxDialog

    Die Liste wird, in diesem Beispiel, mit Dateinamen gefüllt.
    ClearList
    AddFiles *.*                       zeigt nur den Namen ...
    rem AddFiles **.Prf                    oder zeigt den ganzen Pfad
    Let Zeile$ = @ListBox$(Alle Dateien im Verzeichnis,7)    liest den ausgw. Eintrag

    If @Neq$(Zeile$,)                    nur so prüfbar ob überhaupt Auswahl getroffen !

        man kann auch die Nummer der mark. Zeile holen und damit den Zeileninhalt lesen
        Let Zeile% = %GetCurSel             holt die markierte Zeilennummer
        Let Zeile$ = @ListBoxItem$(Zeile%)  holt auch den Zeileninhalt
        Print ListBox Dialog: ,Zeile$

    EndIf

    Return

EndProc

========================================
erstellen des Dialogs mit allen Objekten

proc dialog

    let _dlg%=@createdialog(%Hwnd,Dialog,300,0,480,504)
    1. Listboxen (diese werden mit Create... erstellt, können in der Größe und Position frei
    gewählt werden und sind nicht mit dem fertigen ListBoxDialog zu verwechseln.
    Eine ListBox kann auf zwei Arten gefüllt werden:
    a. mit unabhängiger Liste (selbe Liste wie beim ListBoxDialog)
    ClearList              zuerst lösche die unabhängige Liste
    AddString Text       füge Eintrag zur Liste
    AddString ....       weitere Einträgen
    MoveListToList(LBox%)  übertrage die Liste in die Box (LBox% ist Handle der Box)
    b. direkt zur Listboxliste (LBox% ist Handle der ListBox)
    @SendMessage(LBox%,$0184,0,0)  ggf. löschen eines alten Inhalts, wenn die
    ListBox nicht zuvor neu erstellt wurde
    @AddString(LBox%,Text)
    @AddString(LBox%,....)
    füllen und anzeigen einer unsortierten ListBox
    @createtext(_dlg%,Listbox,12,8,128,16)
    let Lbox%=@createlistbox(_dlg%,ListBox,8,24,100,112)
    @Addstring(LBox%,Satz1)
    @Addstring(LBox%,Satz13)
    @Addstring(LBox%,Satz5)
    @Addstring(LBox%,Satz14)
    @Addstring(LBox%,Satz2)
    @Addstring(LBox%,Satz11)
    @Addstring(LBox%,Satz3)
    @Addstring(LBox%,Satz15)
    @Addstring(LBox%,Satz4)
    @Addstring(LBox%,Satz12)
    füllen und anzeigen einer sortierten ListBox (es wird ungeordnet geladen!)
    @createtext(_dlg%,sort. Listbox,125,8,100,16)
    let SBox%=@createsortedlistbox(_dlg%,,120,24,100,112)
    es werden 2 Tabulatoren gesetzt (als Beispiel - kann aber mit jeder ListBox erfolgen).
    Dim Tabs#,8       pro Tabulator 4 Stellen.
    LONG Tabs#,0 =15  1. Tabulator
    LONG Tabs#,4 =35  2. Tabulator
    @SendMessage(SBox%,$0192,2,Tabs#)  Parameter 3 gibt die Anzahl der Tabstopps an
    Dispose Tabs#
    unsortierte Einträge zur Listbox hinzufügen. Die Zeichenfolge 	 setzt einen Tabulator
    ein (könnte ebenso mit @Chr$(9) erreicht werden).
    @Addstring(SBox%,Ba	111	10)
    @Addstring(SBox%,Ib	111	11)
    @Addstring(SBox%,Aa	020	12)
    @Addstring(SBox%,Ya	a91	13)
    @Addstring(SBox%,Bl	bii	14)
    @Addstring(SBox%,Xf	020	15)
    -------------
    2. Auswahlboxen. Das Befüllen einer Auswahlbox kann, wie bei den Listboxen, sowohl über
    die Listboxliste und danach mit MoveListToChoice(CBox%), als auch direkt erfolgen.
    Die Funktion @Sendmessage ist nicht grundsätzlich erforderlich. Beim Weglassen wird
    ein leeres Feld angezeigt, die Auswahl ist trotzdem möglich.
    füllen und anzeigen einer EditChoiceBox (in PRFELLOW gibt es zwar die Funktion
    CreateEditChoiceBox, hier wurde diese Box aber mit @Control gebildet).
    @createtext(_dlg%,EditChoiceBox,260,8,100,16)
    Ecb%=@Control(ComboBox,,$5401024E,260,24,140,100,_dlg%,2000,%hinstance)
    AddChoice(Ecb%,Ausgabe-1)
    AddChoice(Ecb%,Ausgabe-4)
    AddChoice(Ecb%,Ausgabe-3)
    AddChoice(Ecb%,Ausgabe-2)
    Mit @SendMessage wird im 3. Parameter angegeben, welche Zeile der Liste in
    der 1. Zeile der Box angezeigt wird (mit Null beginnend).
    @Sendmessage(Ecb%,$14E,2,0)            3. Zeile anzeigen (3 - 1 = 2)
    füllen und anzeigen einer (normalen) ChoiceBox (AuswahlBox). Hier werden die Namen der
    Fonts in die Listboxliste und danach in die Choicebox übertragen.
    Bei dieser Choicebox werden die Einträge in sortierter Folge angezeigt!
    @createtext(_dlg%,Auswahlbox,12,145,110,16)
    let ABox%=@createchoicebox(_dlg%,,8,160,210,112)
    clearlist
    addfonts                               es werden alle Fonts angezeigt
    @movelisttochoice(ABox%)
    hier wird nicht eine bestimmte Zeile ausgewählt, sondern der Eintrag der einen
    bestimmten String (hier Arial) enthält.
    Dim Tabs#,50
    String Tabs#,0=Arial
    @sendmessage(ABox%,$14D,-1,Tabs#)          Eintrag auswählen
    Dispose Tabs#
    unsortierte ChoiceBox. (Tip vom mephisto). Entspr. der normalen ChoiceBox, die Einträge
    werden, so wie geladen, unsortiert angezeigt.
    @createtext(_dlg%,uns. Auswahlbox,8,273,150,16)
    Let UBox%=Control(COMBOBOX,,$54010243,8,288,118,120,_dlg%,0,%hinstance)
    clearlist
    Addstring Amerika
    Addstring Europa
    Addstring Australien
    Addstring Asien
    Addstring Afrika
    @movelisttoChoice(UBox%)
    @sendmessage(UBox%,$14E,3,0)            4. Zeile anzeigen
    --------------------------
    3. Edits (Eingabefelder)
    füllen und anzeigen einer MultiEditBox
    @createtext(_dlg%,Editbox,260,145,88,16)
    let EBox%=@createmultiedit(_dlg%,,260,160,150,64)
    ein direktes hinzufügen zur Multi-EditBox gibt es nicht, Umweg über die List-
    BoxListe. Sinvollerweise sollte mindestens ein AddString (mit ) erfolgen.
    Wurde nämlich nichts hinzugefügt und man positioniert den Cursor in der ersten
    Zeile der Listbox müßte sonst nach der Zeile noch die Eingabetaste gedrückt
    werden (sonst wird die Zeile in der Listbox nicht ausgelesen).
    clearlist
    Addstring Satz1
    Addstring Satz3
    Addstring Satz5
    Addstring              mindestens dieser AddString
    @movelisttoEdit(EBox%)
    erstellen eines leeren Eingabefeldes
    @createtext(_dlg%,Eingabefeld,260,238,88,16)
    let EFeld%=@createedit(_dlg%,,260,256,120,22)
    --------------------------
    4. Auf/Ab Control
    @createtext(_dlg%,Auf/Ab,400,238,40,16)
    Die Funktion @CreateEdit ist in der Funktion @CreateUpDownCtl enthalten.
    Die Position des Objekts und der Anfangs- und Endwert sind in @CreateEdit enthalten.
    Par. 7 gibt das obere, Par. 8 das untereLimit an, mit Par. 9 wird Anfangswert bestimmt
    Let SkpCtl&=@CreateUpDownCtl($54000026,0,0,0,0,_dlg%,2002,%hinstance,
    @CreateEdit(_dlg%,,400,256,50,22),100,10,20)
    Let SkpEdt& = @GetUpDownHdl(SkpCtl&)
    --------------------------
    5. Radiobuttons, mit GroupBox zusammengefaßt.
    Let Ra1% = @CreateRadioButton(_dlg%,rot,150,295,76,16)
    Let Ra2% = @CreateRadioButton(_dlg%,blau,150,315,76,16)
    Let Ra3% = @CreateRadioButton(_dlg%,grün,150,335,76,16)
    @createtext(_dlg%,Radiobuttons,140,273,88,16)
    @creategroupbox(_dlg%,,140,280,90,80)
    SetCheck Ra1%,1        Button rot vorgeben
    --------------------------
    6. CheckBox anzeigen
    Let ChBx% = @CreateCheckBox(_dlg%,CheckBox,140,375,90,22)
    SetCheck ChBx%,1       auf ja setzen
    --------------------------
    7. Buttons erstellen
    let Libx%=@createbutton(_dlg%,ListBox,60,432,80,32)
    let Ende%=@createbutton(_dlg%,Ende,200,432,80,32)
    let Bok%=@createbutton(_dlg%,Anzeigen,340,432,80,32)
    --------------------------
    8. auswerten der Eingaben
    Beachte, welche Ereignisse direkt und welche erst nach drücken eines
    Buttons abfragbar sind (nicht direkt: EditBox, EditFeld,Auf/Ab Box und EditChoiceBox).
    let _ende% = 0
    EndPrt% = 0

    whilenot _ende%

        bei Anzeige der MultiEditBox wird der Cursor sinnvollerweise auf die erste
        Position der Box gesetzt
        @SetFocus(EBox%)
        WaitKey

        if @equ(%key,2)     Abbruch (X in Ecke rechts oben im Dialog)

            let _ende% = 1

        elseif @getfocus(Lbox%)

            Let Zeile% = @GetCursel(Lbox%)
            Let Zeile$ = @GetString$(LBox%,Zeile%)
            Print Listbox:         (;@str$(Zeile%);),Zeile$

        elseif @getfocus(SBox%)

            Let Zeile% = @GetCursel(Sbox%)
            Let Zeile$ = @GetString$(SBox%,Zeile%)
            Let Zeile$ = @Translate$(Zeile$,	, )
            Print S-Listbox:       (;@str$(Zeile%);),Zeile$

        elseif @getfocus(ABox%)

            Let Zeile% = @GetCursel(ABox%)
            Let Zeile$ = @GetText$(ABox%)
            Print Auswahlbox:     ,Zeile$

        elseif @getfocus(UBox%)

            Let Zeile% = @GetCursel(UBox%)
            Let Zeile$ = @GetText$(UBox%)
            Print uns. Auswahlbox:,Zeile$

        elseif @getfocus(Libx%)

            MakeListBox

        elseif @getfocus(Ende%)

            EndPrt% = 1
            Print
            Print --- Ende Button
            ZeigeFelder
            Print
            Print === zum Beenden linke Maustaste oder >Enter< drücken ===
            let _ende% = 1

        ElseIf @getFocus(ChBx%)

            If @getCheck(ChBx%)

                Print CheckBox:       ,Ja

            Else

                Print CheckBox:       ,Nein

            EndIf

        ElseIf @getFocus(Ra1%) or @getFocus(Ra2%) or @getFocus(Ra3%)

            Case @getCheck(Ra1%) : Print R-Button:       ,rot
            Case @getCheck(Ra2%) : Print R-Button:       ,blau
            Case @getCheck(Ra3%) : Print R-Button:       ,grün

        elseif @getfocus(Bok%)

            Print
            Print --- Anzeige Button
            ZeigeFelder

        endif

    wend

    @destroywindow(_dlg%)

endproc

=========
MainLine
=========
windowtitle Dialog-Test
cls
dialog
waitinput            damit die Printpan>Liste angesehen werden kann
end
 
15.07.2007  
 



Zum Quelltext


Topictitle, max. 100 characters.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Topic-Options

3.870 Views

Untitledvor 0 min.
Rolf Koch28.10.2012
Heinz Bernhard19.09.2011
Julian Schmidt21.08.2011
Frank Vorholzer14.04.2011

Themeninformationen

Dieses Thema hat 1 subscriber:

unbekannt (1x)


Admins  |  AGB  |  Applications  |  Autori  |  Chat  |  Informativa sulla privacy  |  Download  |  Entrance  |  Aiuto  |  Merchantportal  |  Impronta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Giochi  |  Cerca  |  Support

Ein Projekt aller XProfaner, die es gibt!


Il mio XProfan
Private Notizie
Eigenes Ablageforum
Argomenti-Merkliste
Eigene Beiträge
Eigene Argomenti
Zwischenablage
Annullare
 Deutsch English Français Español Italia
Traduzioni

Informativa sulla privacy


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