Autor Beitrag
HoddeX
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 23



BeitragVerfasst: 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--->

ausblenden 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 user profile iconraziel: Delphi-Tags hinzugefügt.
maxk
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1696
Erhaltene Danke: 1

Win XP, Debian Lenny
Delphi 6 Personal
BeitragVerfasst: Di 19.07.05 10:53 
Hallo und :welcome: 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 ;)).

ausblenden 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 23



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1826
Erhaltene Danke: 11

Win 2000 & VMware
Delphi 3 Prof, Delphi 7 Prof
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 22



BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 23



BeitragVerfasst: 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).

ausblenden 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
//  StatusBar1.SimpleText := 'Bitte klicken sie Berechnen';
  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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1144

Win XP
D5 Standard, D7 Pers, D2005 Pers
BeitragVerfasst: Di 19.07.05 14:46 
user profile iconuall@ogc hat folgendes geschrieben:
musst nen ";" hinter die zeilen 6, 7 und 8 schreiben

:arrow:
user profile iconmaxk hat folgendes geschrieben:
ausblenden 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;


//edit:
Zitat:
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 ?

in den onChange-Ereignissen von allen Edits

_________________
"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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6395
Erhaltene Danke: 149

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: Di 19.07.05 14:47 
Ich benutze dafür immer UpdateActions:
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: Di 19.07.05 14:54 
Kann man noch etwas vereinfachen, wenn's wirklich nur um den Button geht:
ausblenden 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 23



BeitragVerfasst: Di 19.07.05 22:21 
Ich habe es jetzt alles so hinbekommen, wie es sein sollte. Der Code dazu ist folgender:

ausblenden 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