![]() |
Fenster verschwindet
Hi,
ich kapiere immer noch manche einfachen Sachen in Delphi nicht. :P
Code:
Hier soll einfach nur mit F9 ein Fenster aufgehen, in das man etwas eingibt. Das Fenster besteht nur aus einer Form und einem Edit. Das Fenster blinkt kurz auf und verschwindet wieder. Eingeben kann ich nichts.
if (Key = VK_F9) AND (Edit1.Enabled) then begin
Form3.Show; Form3.Edit1.SetFocus; Form3.Hide; end; Gruß Hansa |
Hi,
noch etwas in diesem Zusammenhang : Ich habe jetzt mehrere Forms mit einem Edit-Feld. Das heißt bei jeder Form Edit1. Das könnte doch zu Verwechslungen führen. Wie macht ihr das. Benennt ihr die alle um ? Die Arbeit habe ich mir bis jetzt nämlich nicht gemacht. Gruß Hansa |
Hi!
Umbenennen ist so ne Sache manche machen es manche nicht :| Aber mit deiner Form kann das auch nichts werden, wenn du sofort nachdem du sie mit show zeigst wieder mit hide verschwinden lässt. Mein Tipp Bei der zu zeigenden Form im OnEnter Event des Edit-Feldes abfragen ob Return gedrückt wurde und dann die Form wieder verstecken. |
Moin Hansa,
wenn das Fenster weiter angezeigt werden soll, musst Du es mit ShowModal anzeigen, ansonsten wird Show ausgeführt, die das Show aufrufende Routine läuft weiter, und ruft kurz danach Hide auf. Ausserdem finde ich es "aufgeräumter" Komponenten eines Fensters auch in dessen Unit anzusprechen, wie z.B. den SetFocus auf das Edit Feld. Das gehört, für meinen Geschmack, z.b., in das OnShow von Form3. Was die Bennung von Komponenten angeht: Also ich habe mir angewöhnt, alle Komponenten mit aussagekräftigen Namen zu versehen, selbst StaticText Felder. Von Formularen, Edits, Button usw. mal ganz zu schweigen. Da ich für so etwas Namenskonventionen habe brauche ich mir da meist nicht mal mühsam einen Namen einfallen zu lassen, der ergibt sich fast automatisch ;-) |
Hi,
heute scheint nicht so mein Tag zu sein. :corky:
Code:
Key kennt er nicht. Wo krieg ich den denn her ? Und gleich noch eine Frage, die gut passt : Habe auf der Haupt-Form nach einen Button angelegt, wo draufsteht F9. Wenn der Button geclickt wird, soll das gleiche passieren, als wenn F9 gedrückt wird.
procedure TForm3.Edit1Enter(Sender: TObject);
begin if (Key = VK_Return) then Form3.Hide; end; Gruß Hansa |
Sorry, war mein Fehler :twisted: nimm das OnKeyUp Event vom Edit-Feld dafür.
|
Moin Hansa,
dann musst Du dem OnClick des Buttons die gleiche Routine zuweisen, wie sie beim Druck auf F9 ausgeführt wird. Ggf. im OnClick aufrufen. |
Hi,
das geht jetzt, wie es soll ! Zitat:
@Phlux : Jo, das OnKeyUp, war das richtige. Jetzt müßte ich es nur noch hinkriegen, daß bei geclicktem Button dasselbe gemacht wird, wie bei F9. :party: Gruß Hansa |
Eigentliczh würde ich die Routine um die Form zu zeigen ins OnClick-Event des buttons schreiben und dann wenn du im Event wo du abfragst ob F9 gedrückt wurde nur [ButtonName].Click ausführen, so dürfte das hinhauen.
|
Hi,
Code:
In Button1.Click steht nur Form3.Show. Vorher wars umgekehrt. Das da ist etwas eleganter, aber bei Click auf den Button passiert nichts. Bei F9 schon.if (Key = VK_F9) AND (Edit1.Enabled) then Button1.Click; Gruß Hansa[/quote] |
poste doch mal das komplette OnClick Event des buttons :D
|
Hi,
@phlux: Daran liegts nicht. hier liegt der Hund begraben :
Code:
So siehts jetzt aus. Ursache gefunden Patient noch tot. :mrgreen: Auch wenn ich ein leeres Edit - Feld nicht zulassen will, der Button muß eine Ausnahme bilden, er dient nämlich gerade zum Suchen, falls jemand die Nr. die in das Feld eingegeben werden soll nicht auswendig weiß. Im ButtonClick steht nur Form3.Show.
procedure Form1.Edit1Exit(Sender: TObject);
begin IF Edit1.text <> '' THEN BEGIN Edit1.Enabled := false; Transaction.StartTransaction; .... END ELSE BEGIN Edit1.Text := ''; Edit1.SetFocus; END; end; Gruß Hansa |
ahjo dann :lol:
|
Hi,
Zitat:
Gruß Hansa |
Sry abermals ich dachte du hättest das problem gelöst, also so wie ich das sehe kommt dein prog wahrscheinlich irgendwie damit durcheinander weil du das editfeld manchmal disablesd. Guck nochmal nach ob im Objektinspektor bei den Events deines F9-Buttons wirklich die Prozedur zum Fensterzeigen eingetragen ist.
|
Hi,
mühsam ernährt sich das Eichhörnchen. :dancer: Man sehe sich mal weiter oben an, wie es da aussah.
Code:
Jetzt muß ich mir aber noch einen Button vorknöpfen, den ESC Ende Button. Da kriege ich bestimmt ähnlichen Ärger. :twisted:
ELSE BEGIN
Edit1.Enabled := true; Edit1.Text := ''; IF NOT Button1.Focused THEN Edit1.SetFocus; Button1.Enabled := true; Button2.Enabled := true; END; Gruß P.S.: Das ist die Stelle, falls Edit1.Text = '' ist. Hansa |
Hi,
könnt ihr mir noch einmal helfen? Ich glaube dann hab ichs gepackt.
Code:
Ich weiß nicht wo und wie ich das unterbringen soll. Wie gesagt brauche ich noch einen Ende-Button. Wie kriege ich jetzt genau dieses FormClose in das OnClick-Event des Buttons ? Stecke vor allem wegen des zweiten Parameters Action fest. Onclick hat ja nur Sender. Den Quelltext zu kopieren ginge bestimmt auch, aber das ist wohl nicht der Sinn. Naja, andere die Delphi noch nicht so gut können, kämpfen am Anfang mit den Buttons, ich Idiot fange mit Interbase-SQL-Datenbanken im Netzwerk an. :mrgreen:
procedure Form1.FormClose(Sender: TObject; var Action: TCloseAction);
begin IF NOT LiefModul.LiefDS.IsEmpty THEN BEGIN if MessageDlg('Soll der Datensatz gespeichert werden ?', mtInformation, [mbYes, mbNo], 0) = mrYes then begin LiefModul.LiefDS.post; LiefModul.TransAction.Commit; END ELSE LiefModul.Transaction.Rollback; END; LiefStamm.FormShow (Sender); end; Gruß Hansa |
Hallo, was willst du jetzt genau wissen? In die Close procedure kommst du mit
Code:
Sorry wenn das nicht das war was du wissen wolltest, ich hab nur die letzten beiden Postings durchgelesen.
close;
Gruß, Sebastian |
Hi,
indem ich es einfach genau umgekehrt mache ! Da bin ich sogar selber drauf gekommen. :lol:
Code:
Diese Baustelle ist nahezu abgeschlossen. Also nochmals danke für die Hilfe. Alleine wäre ich noch lange nicht fertig. Ich mußte das hier einmal durchexerzieren, damit ich eine Vorlage für ähnliche Fälle habe.
procedure TLiefStamm.FormClose(Sender: TObject; var Action: TCloseAction);
BEGIN Button2Click (Sender); END; procedure TLiefStamm.Button2Click(Sender: TObject); begin IF NOT LiefModul.LiefDS.IsEmpty THEN BEGIN if MessageDlg('Soll der Datensatz gespeichert werden ?', mtInformation, [mbYes, mbNo], 0) = mrYes then begin LiefModul.LiefDS.post; LiefModul.TransAction.Commit; END ELSE LiefModul.Transaction.Rollback; END; LiefStamm.FormShow (Sender); end; Gruß Hansa |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:39 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz