Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Button nur aktivieren wenn edit Feld eine Eingabe enthält
Purzel90 - Mi 27.02.08 21:45
Titel: Button nur aktivieren wenn edit Feld eine Eingabe enthält
Hallo
Ich habe folgendes Problem:
Ich habe einen Button, der nur Anklickbar sein soll wenn eine Eingabe in einem edit-Feld besteht.
Danke im Vorraus!
--
Gruß Purzel90
jakobwenzel - Mi 27.02.08 21:52
Im Edit gibt ein Eregnis OnChange, das ausgelöst wird, wenn sich der Inhalt ändert.
Mit der Eigenschaft enabled vom Button kannst du einstellen, ob er aktiviert is.
Dann einfach den Inhalt des Edits mit nem Leerstring vergleichen und Enabled zuweisen.
Hidden - Mi 27.02.08 21:56
Hi und :welcome: im Delphi-Forum,
Die Eigenschaft, die du suchst ist Enabled:
Delphi-Quelltext
1: 2: 3: 4: 5: 6:
| procedure TForm1.Edit1Change(Sender: TObject); begin if Edit1.Text = '' then Button1.Enabled := false; else Button1.Enabled := true; end; |
Das ist es im groben.
Edit: Zu langsam...
mfG,
jakobwenzel - Mi 27.02.08 21:59
Nein, bitte nicht so!
Du übergribst deiner if-Bedingung schon einen Boolean-Wert, wozu das if?
Delphi-Quelltext
1:
| Button1.Enabled:=not (Edit1.Text = '') |
Purzel90 - Mi 27.02.08 22:21
Danke für die schnellen Antworten!
--
Gruß Purzel90
Hanni007 - Fr 04.02.11 19:37
Hallo!
Irgendwie klappt das bei mir nicht. Ich verwende gerade Delphi6 aber habe auf dem andren PC noch Delphi7, an dem ich gerade leider nicht ran komme. Naja.
Mein Problem hier konkret ist, dass ich zwei Editfelder habe, die erst, wenn in denen eine Zahl steht, einen Button aktivieren sollen. Dazu habe ich hier diese eingabe versucht.
Button1.Enabled:=not (Edit1.Text = '')
Aber das klappt leider nicht. Könnt ihr mir da bitte weiterhelfen, indem ihr den Befehl exakt aufschreibt? Ich programmiere erst seit kurzem mit Delphi.
Danke! =)
Hanni007
bummi - Fr 04.02.11 19:46
Delphi-Quelltext
1:
| Button1.Enabled:=Length(TRIM( (Edit1.Text)) > 0; |
und schau Dir mal Actions an, die würden sich empfehlen.
Crombo - Fr 04.02.11 19:55
bummi hat folgendes geschrieben : |
Delphi-Quelltext 1:
| Button1.Enabled:=Length(TRIM( (Edit1.Text)) > 0; |
und schau Dir mal Actions an, die würden sich empfehlen. |
Hallo,
nach über 2 Jahren wird ihn das wohl in dem Projekt nicht mehr weiterbringen, aber guter Vorschlag für alle, die jetzt den Thread hier lesen.
Crombo
Hanni007 - Fr 04.02.11 20:02
geht das jetzt nun oder nicht?
Trotzdem schonmal danke! =)
Crombo - Fr 04.02.11 20:10
Der Vorschlag von bummi:
Delphi-Quelltext
1:
| Button1.Enabled:=Length(TRIM( (Edit1.Text)) > 0; |
sollte funktioniert.
Crombo
Hanni007 - Fr 04.02.11 20:13
das geht leider nicht. da kommt ein error auf.
[Error] Unit1.pas(50): Incompatible types: 'String' and 'Integer'
Marc. - Fr 04.02.11 20:15
Hanni007 hat folgendes geschrieben : |
das geht leider nicht. da kommt ein error auf.
[Error] Unit1.pas(50): Incompatible types: 'String' and 'Integer' |
Meine Glaskugel ist gerade etwas vernebelt. Zeigst Du ins bitte Deinen Code, denn der Code-Schnippsel sollte definitiv funktionieren.
Alternativ nocheinmal selbst drüber sinnieren. ;)
Crombo - Fr 04.02.11 20:15
Nein der Codeschnipsel funktioniert so eben nicht, weil da ne schließende Klammer fehlt... ;)
Crombo
Hanni007 - Fr 04.02.11 20:18
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21:
| procedure TForm1.Button1Click(Sender: TObject); var a,b : integer; begin a:=StrToInt(Edit1.Text); b:=StrToInt(Edit2.Text);
Button1.Enabled:=Length(TRIM( (Edit1.Text)) > 0;
Begin If a+b > 0 Then Button1.Visible:=false Else Button1.Visible:=true;
End; Randomize; Label5.Caption:=IntToStr(Random((b)-a+1)+a); Label6.Caption:=IntToStr(Random((b)-a+1)+a); Label7.Caption:=IntToStr(Random((b)-a+1)+a); Label8.Caption:=IntToStr(Random((b)-a+1)+a); Label9.Caption:=IntToStr(Random((b)-a+1)+a); end; |
so siehts aus.
ein button soll erst sichtbar sein, wenn in beiden editfeldern etwas steht, um dann zufallszahlen auszugeben.
Moderiert von
Martok: Delphi-Tags gesetzt
Marc. - Fr 04.02.11 20:19
Crombo hat folgendes geschrieben : |
Nein der Codeschnipsel funktioniert so eben nicht, weil da ne schließende Klammer fehlt... ;) |
Indeed. Das habe ich beim zweiten Mal hingucken nun auch gesehen. Ich ging aber davon aus, dass man sowas schon beim Abschreiben merkt.
Hanni007 - Fr 04.02.11 20:19
Crombo hat folgendes geschrieben : |
Nein der Codeschnipsel funktioniert so eben nicht, weil da ne schließende Klammer fehlt... ;)
Crombo |
die klammer hab ich rein gemacht, das programm startet jetzt, aber hat keine auswirkungen.
Crombo - Fr 04.02.11 20:19
Hanni007 hat folgendes geschrieben : |
Button1.Enabled:=Length(TRIM( (Edit1.Text))) > 0;
so siehts aus.
ein button soll erst sichtbar sein, wenn in beiden editfeldern etwas steht, um dann zufallszahlen auszugeben. |
Habs rot markiert...
Crombo
---
Moderiert von
Narses: Beiträge zusammengefasst---
Delphi-Quelltext
1: 2: 3: 4:
| procedure TForm1.Edit1Change(Sender: TObject); begin Button1.Enabled := Length(trim(Edit1.Text)) > 0; end; |
Das klappt bei mir wunderbar.
Crombo
Hanni007 - Fr 04.02.11 20:28
Sorry. Geht leider immernoch nicht. :( Tut mir jetzt schon leid, dass ich euch damit nerve.
Hier nochmal der neue Quelltext:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24:
| procedure TForm1.Button1Click(Sender: TObject); var a,b : integer; begin a:=StrToInt(Edit1.Text); b:=StrToInt(Edit2.Text);
Begin Button1.Enabled:=Length(TRIM((Edit1.Text))) > 0; Button1.Enabled:=Length(TRIM((Edit2.Text))) > 0; End;
Begin If a+b > 0 Then Button1.Visible:=false Else Button1.Visible:=true;
End; Randomize; Label5.Caption:=IntToStr(Random((b)-a+1)+a); Label6.Caption:=IntToStr(Random((b)-a+1)+a); Label7.Caption:=IntToStr(Random((b)-a+1)+a); Label8.Caption:=IntToStr(Random((b)-a+1)+a); Label9.Caption:=IntToStr(Random((b)-a+1)+a); end; |
Moderiert von
Martok: Delphi-Tags gesetzt
Crombo - Fr 04.02.11 20:29
Dein Problem ist, dass du es beim Klick auf deinen Button überprüfst, der aber gar nichts von dem Klick mitbekommt, weil er nicht Enabled ist.
Machs in die Edit1.OnChange wie ich, dann funktionierts.
Crombo
elundril - Fr 04.02.11 20:30
wozu eigentlich diese wahllosen begins und ends im quelltext? machen das ganze nur unnötig länger und komplizierter.
lg elundril
Hanni007 - Fr 04.02.11 20:32
und wo packe ich das rein? auf alle fälle vor dem button aber wo denn genau?
Marc. - Fr 04.02.11 20:33
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26:
| begin a := StrToInt(Edit1.Text); b := StrToInt(Edit2.Text);
Begin Button1.Enabled:=Length(TRIM((Edit1.Text))) > 0; Button1.Enabled:=Length(TRIM((Edit2.Text))) > 0; End; Begin If a+b > 0 Then Button1.Visible:=false Else Button1.Visible:=true;
End; Randomize; Label5.Caption:=IntToStr(Random((b)-a+1)+a); Label6.Caption:=IntToStr(Random((b)-a+1)+a); [...] end; |
Crombo - Fr 04.02.11 20:33
Doppelklick auf dein Edit-Feld -> Code-Editor öffnet sich -> die Zeile die wir dir genannt haben, dort rein kopieren -> gut ist :)
Crombo
Hanni007 - Sa 05.02.11 09:42
Ja es klappt. =) Danke!
Aber es gibt jetzt nur noch zwei schönheitsfehler.
Wenn ich das programm starte, dann kann man den button drücken. nachdem ich aber jetzt den "wiederherstellen-button" drücke, der alles zurücksetzt(felder leert, button wieder sichtbar macht), dann funktioniert das. wie bekommt man das so hin, dass der button gleich beim start nicht verfügbar ist?
und der zweite schönheitsfehler. Wie kann ich einstellen, dass sich der button erst aktiviert, wenn ich in erst in beiden feldern was stehen hab. zurzeit braucht man nur ein feld ausfüllen.
Danke schon mal für die tolle hilfe!!! =)
Crombo - Sa 05.02.11 10:12
Hallo,
Im Objektinspektor Enabled auf false stellen. Oder beim Starten deiner Anwendung per Codezeile Enabled auf false.
Zwei Bedingungen kannst du mit AND verknüpfen:
Delphi-Quelltext
1: 2: 3: 4:
| if (Bedingung 1) and (Bedingung 2) then begin end; |
Crombo
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!