Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Fenster verschwindet (https://www.delphipraxis.net/1971-fenster-verschwindet.html)

Hansa 1. Jan 2003 16:42


Fenster verschwindet
 
Hi,

ich kapiere immer noch manche einfachen Sachen in Delphi nicht. :P
Code:
  if (Key = VK_F9) AND (Edit1.Enabled) then begin
    Form3.Show;
    Form3.Edit1.SetFocus;
    Form3.Hide;
  end;
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.

Gruß
Hansa

Hansa 1. Jan 2003 16:48

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

phlux 1. Jan 2003 17:01

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.

Christian Seehase 1. Jan 2003 17:07

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 ;-)

Hansa 1. Jan 2003 17:13

Hi,

heute scheint nicht so mein Tag zu sein. :corky:

Code:
procedure TForm3.Edit1Enter(Sender: TObject);
begin
  if (Key = VK_Return) then
    Form3.Hide;
end;
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.

Gruß
Hansa

phlux 1. Jan 2003 17:17

Sorry, war mein Fehler :twisted: nimm das OnKeyUp Event vom Edit-Feld dafür.

Christian Seehase 1. Jan 2003 17:28

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.

Hansa 1. Jan 2003 17:29

Hi,

das geht jetzt, wie es soll !
Zitat:

Zitat von Christian Seehase
Ausserdem finde ich es "aufgeräumter" Komponenten eines Fensters auch in dessen Unit anzusprechen, wie z.B. den SetFocus auf das Edit Feld.

Hast Recht. In der aufrufenden Unit steht jetzt nur noch Form3.Show. Das geht wohl nicht anders. Du benennst alle Namen um ? Dafür war ich bisher zu faul. Aber ich glaube, ich werde es in Zukunft auch so machen. Das ShowModal, wäre allerdings hier verkehrt, denn das Fenster soll direkt nach der Eingabe wieder verschwinden.

@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

phlux 1. Jan 2003 17:36

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.

Hansa 1. Jan 2003 17:44

Hi,

Code:
 
 if (Key = VK_F9) AND (Edit1.Enabled) then
   Button1.Click;
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.

Gruß
Hansa[/quote]


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:51 Uhr.
Seite 1 von 2  1 2      

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