Deutsch
Units

Optionsdialog

 
Optionsdialog.Pcu

8 kB
Hochgeladen:13.05.2006
Ladeanzahl245
Herunterladen
 
13.05.2006  
 




Michael
Wodrich
...und die macht was alles?
...und die wird wie aufgerufen?

HILFE!
 
Programmieren, das spannendste Detektivspiel der Welt.
13.05.2006  
 



Der Aufruf lautet:
$U optionsdialog.pcu = optionsdialog.

Was sie alles macht weiss ich auch noch nicht - bis jetzt bekomme ich nur Meldungen:
das oder das ind der PCU nicht declariert ! -
 
13.05.2006  
 



Nachtrag:
Das ist einer der Gründe, warum ich gegen PCU bin - ich bin der jeweiligen Unit hilflos ausgeliefert und wenn dann so ein Teil nicht 100%tig ist, kann ich es vergessen :/:
 
13.05.2006  
 




Michael
Wodrich
Wenn die Schnittstelle gut beschrieben ist, dann ist das genauso wie eine Befehlserweiterung.
Aber eine gute Beschreibung ist natürlich dann sehr wichtig.

Schöne Grüße
Michael Wodrich
 
Programmieren, das spannendste Detektivspiel der Welt.
13.05.2006  
 



Menno ich hab die Unit doch nur schnell gepostet da jemand fragte. Hatte im selbigen Augenblick auch nicht die Zeit eine Hilfe zu erstellen - das ist nur eine Test-Unit - da ist nix fertig dran! Hier der Source:
//
// ACHTUNG FUNCODE
//
 {$cq}
 $P*
 $L
DECLARE ?_HDL&[50,3]

PROC ?_VER

    RETURN "0.1.0"

ENDPROC

PROC ?_EDGE

    PARAMETERS HDL&
    SHOWWINDOW (HDL&,0)
    EXTERNAL("USER32","SetWindowLongA",HDL&,-20,OR(EXTERNAL("USER32","GetWindowLongA",HDL&,-20),$20080))
    SHOWWINDOW (HDL&,1)

ENDPROC

PROC ?_OPEN

    PARAMETERS S$
    DECLARE DLG&,LB&,T$,I&,RUB$[20],RUBN&[20],GB&,B1&,B2&,B3&,B4&,FNT&,OK%,DLGW&,TIT&
    DECLARE ACTRUB$,TMPS$,CHANGED%,THISPLANE$,OLDPLANE$,FIRSTRUN%

    PROC PAINTRUB

        PARAMETERS SS$
        DECLARE RN&,CX%,TYP$,INI$,DSC$,ELM%,CY%,OS$
        OS$=SS$
        RN&=0
        I&=1

        WHILE I& <= 20

            IF (RUB$[I&]=SS$)

                RN&=I&

            ENDIF

            INC I&

        WEND

        I&=20

        IF RN&

            SS$="NIL"
            CX%=1
            CY%=50
            ELM%=0

            WHILE LEN(SS$)

                INC CX%
                SS$=TRIM$(SUBSTR$(S$,CX%,"|"))

                IF VAL(TRIM$(SUBSTR$(SS$,1,";")))=RN&

                    TYP$=TRIM$(UPPER$(SUBSTR$(SS$,2,";")))
                    INI$=TRIM$(SUBSTR$(SS$,3,";"))
                    DSC$=TRIM$(SUBSTR$(SS$,4,";"))
                    INC ELM%

                    IF TYP$="CHECKBOX"

                        ?_HDL&[ELM%,3]=1
                        ?_HDL&[ELM%,2]=(CONTROL("STATIC","",$50001000,(154),(CY%+1),(DLGW&-181),(23),(GB&),0,%HINSTANCE))
                        ?_HDL&[ELM%,1]=CREATECHECKBOX(?_HDL&[ELM%,2],"",5,1,DLGW&-171,19)
                        CY%=CY%+30
                        SETFONT ?_HDL&[ELM%,1],FNT&
                        SETTEXT ?_HDL&[ELM%,1],DSC$

                    ELSEIF TYP$="RADIOBOX"

                        ?_HDL&[ELM%,3]=2
                        ?_HDL&[ELM%,2]=(CONTROL("STATIC","",$50001000,(154),(CY%+1),(DLGW&-181),(23),(GB&),0,%HINSTANCE))
                        ?_HDL&[ELM%,1]=CREATERADIOBUTTON(?_HDL&[ELM%,2],"",5,1,DLGW&-171,19)
                        CY%=CY%+30
                        SETFONT ?_HDL&[ELM%,1],FNT&
                        SETTEXT ?_HDL&[ELM%,1],DSC$

                    ELSEIF TYP$="LOADFILE"

                        ?_HDL&[ELM%,3]=3
                        ?_HDL&[ELM%,1]=(CREATE("EDIT",(GB&),"",(154),(CY%+1),(DLGW&-211),(17)))
                        ?_HDL&[ELM%,2]=(CREATE("BUTTON",(GB&),"...",(154+DLGW&-211),(CY%),(30),(19)))
                        CY%=CY%+25
                        SETFONT ?_HDL&[ELM%,1],FNT&
                        SETFONT ?_HDL&[ELM%,2],FNT&

                    ELSE

                        ?_HDL&[ELM%,1]=0
                        ?_HDL&[ELM%,2]=0
                        ?_HDL&[ELM%,3]=0

                    ENDIF

                ENDIF

            WEND

            SHOWWINDOW (TIT&,0)
            SETTEXT TIT&,OS$
            SHOWWINDOW (TIT&,1)

        ENDIF

    ENDPROC

    PROC REMOVERUB

        DECLARE I&
        I&=1

        WHILE I& <= 50

            IF (?_HDL&[I&,3]>0) AND (?_HDL&[I&,3]<4)

                DESTROYWINDOW (?_HDL&[I&,1])
                DESTROYWINDOW (?_HDL&[I&,2])
                ?_HDL&[I&,3]=0

            ELSE

                ?_HDL&[I&,1]=0
                ?_HDL&[I&,2]=0
                ?_HDL&[I&,3]=0

            ENDIF

            INC I&

        WEND

        I&=50

    ENDPROC

    FNT&=CREATEFONT("MS Sans Serif",10,0,0,0,0)
    WINDOWSTYLE ( 16 | 512 )
    DLG&=(CREATE("WINDOW",(%HWND),"Setup",((%MAXX2)-260),((%MAXY2)-200),(520),(400)))
    ?_EDGE DLG&
    GB&=(CREATE("TABCTRL",(DLG&),"",(2-3),(0-3),(WIDTH(DLG&)-2+6),(HEIGHT(DLG&)+6)))
    SENDMESSAGE (GB&,4873,0,0)
    LB&=(CREATE("LISTBOX",(GB&),"",(0),(2),(130),(HEIGHT(GB&)-4)))
    SENDMESSAGE(LB&,416,0,25)
    ?_EDGE LB&
    T$=TRIM$(SUBSTR$(S$,1,"|"))
    I&=1

    WHILE I& <= 20

        RUB$[I&]=SUBSTR$(SUBSTR$(T$,I&,","),2,"=")
        RUBN&[I&]=VAL(SUBSTR$(SUBSTR$(T$,I&,","),1,"="))

        IF LEN(RUB$[I&])

            ADDSTRING(LB&,RUB$[I&])

        ENDIF

        INC I&

    WEND

    I&=20
    DLGW&=WIDTH(GB&)
    B1&=(CREATE("BUTTON",(DLG&),"&OK",(DLGW&-340-36),(HEIGHT(GB&)-40),(84),(22)))
    B2&=(CREATE("BUTTON",(DLG&),"&Abbrechen",(DLGW&-260-24),(HEIGHT(GB&)-40),(84),(22)))
    B3&=(CREATE("BUTTON",(DLG&),"&Übernehmen",(DLGW&-180-12),(HEIGHT(GB&)-40),(84),(22)))
    B4&=(CREATE("BUTTON",(DLG&),"&Hilfe",(DLGW&-100),(HEIGHT(GB&)-40),(84),(22)))
    SETFONT B1&,FNT&
    SETFONT B2&,FNT&
    SETFONT B3&,FNT&
    SETFONT B4&,FNT&
    ENABLEWINDOW B3&,0
    OK%=0
    TIT&=(CREATE("GROUPBOX",(GB&),"Bestätigungen",(144),(15),(DLGW&-160),(19)))
    SELECTSTRING(LB&,-1,GETSTRING$(LB&,0))
    ACTRUB$=GETSTRING$(LB&,0)
    PAINTRUB ACTRUB$
    CHANGED%=0
    THISPLANE$=""
    OLDPLANE$=""
    FIRSTRUN%=1

    WHILE (OK%=0)

        ?_SUBCLASS ACTRUB$

        IF THISPLANE$<>OLDPLANE$

            IFNOT CHANGED%

                ENABLEWINDOW B3&,1
                CHANGED%=1

            ENDIF

        ELSE

            IF CHANGED%

                ENABLEWINDOW B3&,0
                CHANGED%=0

            ENDIF

        ENDIF

        GETMESSAGE

        IF GETFOCUS(LB&)

            SETFOCUS(GB&)

            IF GETSTRING$(LB&,GETCURSEL(LB&))<>ACTRUB$

                REMOVERUB ACTRUB$
                ACTRUB$=GETSTRING$(LB&,GETCURSEL(LB&))
                PAINTRUB ACTRUB$

            ENDIF

        ENDIF

        THISPLANE$=""
        I&=1

        WHILE I& <= 50

            IF ?_HDL&[I&,3]>0

                IF ?_HDL&[I&,3]=1

                    THISPLANE$=THISPLANE$+STR$(GETCHECK(?_HDL&[I&,1]))

                ELSEIF ?_HDL&[I&,3]=2

                    THISPLANE$=THISPLANE$+STR$(GETCHECK(?_HDL&[I&,1]))

                ELSEIF ?_HDL&[I&,3]=3

                    THISPLANE$=THISPLANE$+""+GETTEXT$(?_HDL&[I&,1])+""

                    IF %GETFOCUS=?_HDL&[I&,2]

                        TMPS$=LOADFILE$("Programmwahl:","Programme|*.exe")

                        IF LEN(TMPS$)

                            SETTEXT ?_HDL&[I&,1],TMPS$

                        ENDIF

                        SENDMESSAGE(?_HDL&[I&,1],$00B1,0,255)
                        SETFOCUS (?_HDL&[I&,1])

                    ENDIF

                ENDIF

            ENDIF

            INC I&

        WEND

        I&=50

        IF FIRSTRUN%

            FIRSTRUN%=0
            OLDPLANE$=THISPLANE$

        ENDIF

        IF CLICKED(B1&)

            OK%=1

        ELSEIF CLICKED(B2&)

            OK%=2

        ELSEIF CLICKED(B3&)

            IF CHANGED%

                ENABLEWINDOW B3&,0
                OLDPLANE$=THISPLANE$
                CHANGED%=0

            ENDIF

        ENDIF

    WEND

    DESTROYWINDOW (TIT&)
    DESTROYWINDOW (B1&)
    DESTROYWINDOW (B2&)
    DESTROYWINDOW (B3&)
    DESTROYWINDOW (B4&)
    DESTROYWINDOW (GB&)
    DESTROYWINDOW (LB&)
    DESTROYWINDOW (DLG&)
    DELETEOBJECT FNT&
    SETTIMER 1
    WAITINPUT
    KILLTIMER
    SETMENUITEM 0

ENDPROC

Salve.
 
14.05.2006  
 




Michael
Wodrich
Ist es eigentlich möglich, daß der Codeformer vor und hinter Operatoren ein Leerzeichen setzen kann?
Die Umformung soll doch der Lesbarkeit dienen und wenn die Operatoren fein säuberlich abgegrenzt werden, dann wird es leichter erkennbar. Mich stören hier gerade die Gleichheitszeichen, aber es betrifft eigentlich alle Operatoren.

Genau wie meine Bitte, vor und nach dem Kommentar-Apostroph ein Leerzeichen zu setzen. Es erhöht die Lesbarkeit.

Schöne Grüße
Michael Wodrich

Ächtz - und immer wieder Wend statt EndWhile...
 
Programmieren, das spannendste Detektivspiel der Welt.
15.05.2006  
 



Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

6.810 Betrachtungen

Unbenanntvor 0 min.
iF31.10.2020
Christof Neuß05.11.2017
JörgG08.09.2017
Hans-Jürgen Trog17.04.2017
Mehr...

Themeninformationen

Dieses Thema hat 3 Teilnehmer:

Michael Wodrich (3x)
unbekannt (2x)
iF (2x)


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