| Autor |
Beitrag |
HoddeX
      
Beiträge: 23
|
Verfasst: Di 19.07.05 10:50
Hallo zusammen,
ich bin ganz neu hier, und hofe ich habe die richtige Rubrik für mein Problem erwischt.
Über die Semesterferien gabs eine Programmieraufgabe, die ich nun zu bewerkstelligen habe.
Hier nun also zu meinem ersten Problem:
Es soll das Berechnen Feld erst Freigegeben werden, wenn alle Felder ausgefüllt sind, und der Text der Statusbar soll sich ebenfalls ändern. Programm läuft zwar, aber es tut sich nichts, wenn man alles ausfüllt. Es läuft auch nur, wenn man die Statusbarzeile entfernt, komischerweise
Hier der Quellcode--->
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| procedure TF_Haupt.B_BerechnenClick(Sender: TObject);
begin
if (Trim(E_Gewicht.Text) <> '') and (Trim(E_Zurr.Text) <> '') and (Trim(E_LLaenge.Text) <> '') and(Trim(E_LBreite.Text) <> '') and (Trim(E_LHoehe.Text) <> '') and (Trim(E_FLaenge.Text) <> '') and(Trim(E_FBreite.Text) <> '')
then B_Berechnen.enabled := TRUE StatusBar1.SimpleText := 'Bitte klicken sie Berechnen'
else B_Berechnen.enabled := FALSE end; |
Moderiert von raziel: Delphi-Tags hinzugefügt.
|
|
maxk
      
Beiträge: 1696
Erhaltene Danke: 1
Win XP, Debian Lenny
Delphi 6 Personal
|
Verfasst: Di 19.07.05 10:53
Hallo und  im Delphi-Forum!
Wenn du mehrere Befehle ausführen möchtest, musst du diese in einen begin...end Block packen (und die Delphitags verwenden, damit man den Fehler schneller findet  ).
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8:
| if (Trim(E_Gewicht.Text) <> '') and (Trim(E_Zurr.Text) <> '') and (Trim(E_LLaenge.Text) <> '') and(Trim(E_LBreite.Text) <> '') and (Trim(E_LHoehe.Text) <> '') and (Trim(E_FLaenge.Text) <> '') and(Trim(E_FBreite.Text) <> '')
then begin B_Berechnen.enabled := TRUE StatusBar1.SimpleText := 'Bitte klicken sie Berechnen' end else B_Berechnen.enabled := FALSE |
Gruß,
maxk
_________________ Ein Computer wird das tun, was Du programmierst - nicht das, was Du willst.
|
|
HoddeX 
      
Beiträge: 23
|
Verfasst: Di 19.07.05 12:46
Erstmal schönen dank für die schnelle Hilfe, jedoch war das noch nicht des Rätsels Lösung, es läuft genau auf dasselbe heraus. Meckern bei der Statusbarzeile (Operator oder Semikolon fehlt) und Berechnen Button erscheint nicht, nach Ausfüllen aller Felder.
|
|
uall@ogc
      
Beiträge: 1826
Erhaltene Danke: 11
Win 2000 & VMware
Delphi 3 Prof, Delphi 7 Prof
|
Verfasst: Di 19.07.05 12:48
musst nen ";" hinter die zeilen 6, 7 und 8 schreiben
_________________ wer andern eine grube gräbt hat ein grubengrabgerät
- oder einfach zu viel zeit
|
|
AG
      
Beiträge: 22
|
Verfasst: Di 19.07.05 13:46
ich tippe mal, daß am Anfang der Berechnen-Knopp auf disabled steht;
damit reagiert er natürlich nicht auf den Mouse-Click, und der code wird nicht ausgeführt, und er kann niemals wieder enabled werden...
Vielleicht ist er am Anfang auch enabled, dann drückst du eventuell einmal drauf, wenn nicht alles ausgefüllt ist, danach ist er dann disabled (und das für den Rest aller Zeiten, da ja danach dein code nicht mehr ausgeführt wird);
Du müßtest also den code, der den Button enabled und den status-Text schreibt, an ein anderes Ereignis knüpfen, z.B. an das Ändern oder Verlassen der Edit-Felder...
|
|
HoddeX 
      
Beiträge: 23
|
Verfasst: Di 19.07.05 14:38
Das stimmt, ich hatte den button direkt bei OnShow auf False gesetzt. Das Problem it auch, dass er erst beim anklicken wieder aktiviert werden würde, aber da er ja deaktiviert ist, nie wieder aktiviert werden kann. (Ich habs mal anders rum probiert, dass er von true auf false wechselt).
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| procedure TF_Haupt.B_BerechnenClick(Sender: TObject); begin Statusbar1.SimpleText:='Bitte füllen sie die Eingabefelder aus'; if (Trim(E_Gewicht.Text) <> '') and (Trim(E_Zurr.Text) <> '') and (Trim(E_LLaenge.Text) <> '') and(Trim(E_LBreite.Text) <> '') and (Trim(E_LHoehe.Text) <> '') and (Trim(E_FLaenge.Text) <> '') and(Trim(E_FBreite.Text) <> '') then B_Berechnen.enabled := TRUE else B_Berechnen.enabled := FALSE end; |
Die Statusbar möchte er trotzdem nicht, und irgendwie muss ich das mit einem anderen Eregnis als mit einem OnClick Ereignis programmieren, aber wie mache ich das denn dann ?
Der Button soll zu Anfang auf False stehen, weil keine Eingaben gemacht wurden, und nach allen Eingaben von alleine auf true geschaltet werden ... nur wie ?
|
|
StefanH
      
Beiträge: 1144
Win XP
D5 Standard, D7 Pers, D2005 Pers
|
Verfasst: Di 19.07.05 14:46
_________________ "Als es noch keine Computer gab, war das Programmieren noch relativ einfach."(Edsger W. Dijkstra)
"Ich bin nicht von Sinnen, sondern ich rede wahre und vernünftige Worte." (Paulus)
Zuletzt bearbeitet von StefanH am Di 19.07.05 14:50, insgesamt 1-mal bearbeitet
|
|
jasocul
      
Beiträge: 6395
Erhaltene Danke: 149
Windows 7 + Windows 10
Sydney Prof + CE
|
Verfasst: Di 19.07.05 14:47
Ich benutze dafür immer UpdateActions:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18:
| type TForm1 = class(TForm) ... protected procedure updateActions; Override; ... end; ...
procedure TForm1.UpdateActions; begin if (Trim(E_Gewicht.Text) <> '') and (Trim(E_Zurr.Text) <> '') and (Trim(E_LLaenge.Text) <> '') and(Trim(E_LBreite.Text) <> '') and (Trim(E_LHoehe.Text) <> '') and (Trim(E_FLaenge.Text) <> '') and(Trim(E_FBreite.Text) <> '') then B_Berechnen.enabled := TRUE else B_Berechnen.enabled := FALSE end; |
ungeprüfter Source!
|
|
BenBE
      
Beiträge: 8721
Erhaltene Danke: 191
Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
|
Verfasst: Di 19.07.05 14:54
Kann man noch etwas vereinfachen, wenn's wirklich nur um den Button geht:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| B_Berechnen.enabled := (Trim(E_Gewicht.Text) <> '') and (Trim(E_Zurr.Text) <> '') and (Trim(E_LLaenge.Text) <> '') and (Trim(E_LBreite.Text) <> '') and (Trim(E_LHoehe.Text) <> '') and (Trim(E_FLaenge.Text) <> '') and (Trim(E_FBreite.Text) <> ''); If B_Berechnen.enabled Then ShowMessage('Aktiviert!') else ShowMessage('Aktiviert!'); |
_________________ Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
|
|
HoddeX 
      
Beiträge: 23
|
Verfasst: Di 19.07.05 22:21
Ich habe es jetzt alles so hinbekommen, wie es sein sollte. Der Code dazu ist folgender:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19:
| procedure TF_Haupt.OnEingabeChange(Sender: TObject); begin if (Trim(E_Gewicht.Text) <> '') and (Trim(E_Zurr.Text) <> '') and (Trim(E_LLaenge.Text) <> '') and (Trim(E_LBreite.Text) <> '') and (Trim(E_LHoehe.Text) <> '') and (Trim(E_FLaenge.Text) <> '') and (Trim(E_FBreite.Text) <> '') then begin B_Berechnen.enabled := TRUE; Statusbar1.SimpleText:='Bitte klicken sie nun auf Berechnen'; end else begin B_Berechnen.enabled := FALSE; Statusbar1.SimpleText:='Es müssen alle Felder ausgefüllt werden.'; end; end; |
Danke für eure Hilfe
|
|
|