Foro | | | | Lars Gallasch | Hallo
Ich will das Die Eingaben im Dialog dann im Hauptfensterangezeigt werden, ich diese suchen und seichern kann. Wenn ich aber die Zweige eingebe bekomm ich nur Fehlermeldungen.Was mache ich da falsch. Gruss Lars KompilierenMarkierenSeparieren
proc Eingabe
declare hFont&
declare _ende%
declare _dlg%
declare Name%
declare Strasse%
declare PLZ%
declare Ort%
declare Dat%
declare PARK%
declare ABL%
declare VOB%
declare BEM%
declare ENDE%
declare BOK%
hFont& = create("Font", "ARIAL",14,0,0,0,0)
setdialogfont hFont&
_dlg% = createdialog(%hWnd, "Eingabe Kunde", 180, 100, 886, 608)
Name% = create("text", _dlg%, "Name", 32, 16, 128, 32)
create("edit", _dlg%, "", 32, 48, 376, 40)
Strasse% = create("text", _dlg%, "Strasse", 32, 112, 128, 32)
create("edit", _dlg%, "", 32, 144, 376, 40)
PLZ% = create("text", _dlg%, "Postleitzahl", 32, 208, 128, 32)
create("edit", _dlg%, "", 32, 240, 376, 40)
Ort% = create("text", _dlg%, "Ort", 32, 312, 128, 32)
create("edit", _dlg%, "", 32, 344, 376, 40)
Dat% = create("dateedit", _dlg%, "Datum", 32, 408, 128, 32)
PARK% = create("Text", _dlg%, "Parken", 472, 16, 112, 32)
create("edit", _dlg%, "", 472, 48, 264, 40)
ABL% = create("text", _dlg%, "Abladen", 32, 472, 128, 32)
VOB% = create("edit", _dlg%, "Von: Bis:", 32, 504, 376, 40)
BEM% = create("text", _dlg%, "Bemerkung", 472, 112, 128, 32)
create("edit", _dlg%, "", 472, 144, 392, 352)
BOK% = create("button", _dlg%, "OK", 528, 528, 104, 32)
ENDE% = create("button", _dlg%, "Abbruch", 656, 528, 112, 32)
_ende% = 0
whilenot _ende%
waitinput
if @equ(%key ,2)
let _ende% = 1
elseif @getfocus(ENDE%)
_ende% = 1
elseif getfocus(bok%)
let Zeile$ = @gettext$(Name%, Strasse%,PLZ%,Ort%,Datum%,Abladen%,Bemerkung%)
let ende% = 1
endif
wend
@destroywindow(_dlg%)
endproc
Proc TextDemo
Declare Winkel%,Groesse%
TextColor @RGB(0,0,0), -1
UseFont "Times New Roman",Groesse%,0,0,0,0
DrawText 250,180,Zeile$
Add Winkel%,150
Wend
EndProc
Proc Bildschirm
CLS
_dlg
ENDPROC
=============
Hauptprogramm
=============
DECLARE Ende%, Zeile$
WindowStyle $21F
Window 0,0-640,480
WindowTitle "Kunden Übersicht"
PopUp "&Datei"
Appendmenu 201,"&Neu"
Appendmenu 202,"&Suchen"
Appendmenu 203,"&Öffnen"
Appendmenu 204,"&Seichern"
Appendmenu 205,"Speichern &als"
Separator
Appendmenu 401,"&Beenden"
PopUp "Hilfe"
Appendmenu 601,"&Info"
Let Zeile$ = ""
Let Ende% = 0
WHILENOT Ende%
WAITINPUT
IF MenuItem(201)
Eingabe
ELSEIF MenuItem(202)
@createtext(Dlg%,"Geben Sie einen Suchbegriff ein und drücken Sie den Button",30,5,424,16)
ELSEIF MenuItem(203)
Bildschirm
ELSEIF MenuItem(204)
Let Name% = @SaveFile$("Speichere Datei",
"Kunden Übersicht(*.prf)|*.prf|Header-Datei (*.ph)|*.ph|Text (*.txt)|*.txt")
ELSEIF MenuItem(401)
Let Ende% = 1
ELSEIF MenuItem(601)
MessageBox( "(c) Lars Gallasch 2008","Kundenverzeichnis",48)
ENDIF
='./../../funktionsreferenzen/xprofan/endwhile/'>ENDWHILE
END
|
| | | | |
| | Rolf Koch | Hi Lars
Zuerst die Bitte Fonte mit [_code][_/code] ohne _ hier auflisten. Hab dies per Dich geändert, sodass der Code besser angezeigt wird.
Datum%,Abladen%,Bemerkung% sind nicht deklariert. Nachtrag: Hab grad gesehen, dass Du diese garnicht im Programm zuordnest nur halt in Zeile$ diese necessario hast. Du hast die declariert als Bermerkung% und nutzt dafür aber BEM% und genau dasselbe mit abladen% lautet unten VOB% ???? Oder Dat% ist unten zum auslesen aufeinmal datum% ????? Das kann das Programm ja nicht wissen *lol* _dlg ist das eine Proc? Kann ich nicht finden. Die fehlt noch. Ich meine dies hier: KompilierenMarkierenSeparieren Oder kann es sein, dass Du nur oben bei dem Dialog etwas verwechselt hast? Die lautet nämlich PROC EINGABE.
Desweiteren unten nicht declariert: DLG%,Name% Aber ich sehe, da machst Du auch einen Fehler, denn SAVEFILE necessario eine STRINGVARIABLE also Name$=@savefile..... weil das Ergebnis keine Zahl sondern eine File sein soll! Ich hoffe, danach gehts auch weiter? Weil ein SAVEFILE reicht nicht, denn damit hast Du nur den String wie CFADNOCHNPFADNAMEDERDATEI.XXX erreicht. Für das Speichern musst Du dann selbst noch sorgen.
Das ist hart: @gettext$(Name%, Strasse%,PLZ%,Ort%,Datum%,Abladen%,Bemerkung%) Du kannst pro Variable nur einmal gettext nehmen: KompilierenMarkierenSeparieren Oder mach es so: KompilierenMarkierenSeparieren Nachtrag: Uuiuiuiui - das ist auch krass: KompilierenMarkierenSeparierenName% = create(text, _dlg%, Name, 32, 16, 128, 32)
create(edit, _dlg%, , 32, 48, 376, 40)
Du musst den Editfeldern die Variablen geben, denn diese möchtest Du doch auslesen! Hier bekommst Du immer nur den Text im Textfeld zurück Hier wäre es zum Beispiel immer Name, welcher im Ergebnis stehen würde, denn wie gesagt wird mit gettext$(name%) hier das Textfeld immer ausgelesen und dies ist ja logischerweise NAME und bleibt immer NAME ^^ So richtig: KompilierenMarkierenSeparierencreate(text, _dlg%, Name, 32, 16, 128, 32)
Name%=create(edit, _dlg%, , 32, 48, 376, 40)
Nochwas: Oben im _dlg% benennst Du den Beendenbutton ende% und unten die Programmendevariable auch ende% Nenn lieber dann die Programmendevariable: progende% Auch würde ich bei elseif getfocus(bok%) ein ende% = 1 setzen, damit das Dialogfenster wieder geschlossen wird. |
| | | | |
| | Lars Gallasch | Ich danke dir per deine schnelle Aiuto . Bin ja noch im Anfängerstress. Werde die ganze Sache nochmal Überarbeiten. |
| | | | |
| | | @Lars Im Codetext ist ein Eingabedialog den Du naturalmente nach Deinem Geschmack verändern kannst. Aber so funktioniert die Sache - spätere Möglichkeiten sind naturalmente noch offen. Aber zuerst einmal die Grundzüge beherrschen ;) KompilierenMarkierenSeparierenDECLARE font0%
font0%=CREATE("FONT","ARIAL",16,6,0,0,0)
---------------------------------------------------------------------------------
PROC EINGABE
DECLARE EE%,eingabe&,back%,save%,zeile%,steig%,txt%
zeile%=20
steig%=30
DECLARE name%,vorname%,strasse%,plz%,ort%
DECLARE name$,vorname$,strasse$,plz$,ort$
EE%=0
eingabe&=CREATE("DIALOG",%hwnd,"Eingabe-Modul",(%MaxX/2-200),(%MaxY/2-200),400,260)
txt%=CREATE("TEXT",eingabe&,"Name:",10,zeile%,100,20)
SetFont txt%,font0%
name%=CREATE("EDIT",eingabe&,name$,110,zeile%,250,20)
zeile%=zeile%+steig%
txt%=CREATE("TEXT",eingabe&,"Vorname:",10,zeile%,100,20)
SetFont txt%,font0%
vorname%=CREATE("EDIT",eingabe&,vorname$,110,zeile%,250,20)
zeile%=zeile%+steig%
txt%=CREATE("TEXT",eingabe&,"Strasse:",10,zeile%,100,20)
SetFont txt%,font0%
strasse%=CREATE("EDIT",eingabe&,strasse$,110,zeile%,250,20)
zeile%=zeile%+steig%
txt%=CREATE("TEXT",eingabe&,"Postleitzahl:",10,zeile%,100,20)
SetFont txt%,font0%
plz%=CREATE("EDIT",eingabe&,plz$,110,zeile%,100,20)
zeile%=zeile%+steig%
txt%=CREATE("TEXT",eingabe&,"Wohnort:",10,zeile%,100,20)
SetFont txt%,font0%
ort%=CREATE("EDIT",eingabe&,ort$,110,zeile%,250,20)
zeile%=zeile%+50
back%=CREATE("BUTTON",eingabe&,"&Abbrechen",10,zeile%,100,25)
save%=CREATE("BUTTON",eingabe&,"&Speichern",280,zeile%,100,25)
SetFocus(name%)
WHILENOT EE%
IF GetFocus(back%)
IF CLICKED(back%)
EE%=1
DesTroyWindow(eingabe&)
SetActiveWindow(%Hwnd)
EndIF
If GetFocus(save%)
IF CLICKED(save%)
name$=Gettext$(name%)
vorname$=Gettext$(vorname%)
strasse$=Gettext$(strasse%)
plz$=Gettext$(plz%)
ort$=Gettext$(ort%)
EE%=1
DesTroyWindow(eingabe&)
SetActiveWindow(%Hwnd)
PRINT name$
PRINT vorname$
PRINT strasse$
PRINT plz$
PRINT ort$
ENDIF
WEND
EndWhile
ENDPROC
--------------------------------------------------------------------------------
Window 0,0-%MaxX,%MaxY
EINGABE
WAITIN >
END
Viel Erfolg |
| | | | |
|
AnswerThemeninformationenDieses Thema hat 3 subscriber: |