Delphi-PRAXiS

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 Panel als ShowModal? (https://www.delphipraxis.net/183357-panel-als-showmodal.html)

OrNEC 5. Jan 2015 13:54

Panel als ShowModal?
 
Hallo,

ist es möglich ein Panel als ShowModal im Form zu halten? Also ich habe ein Paar Edits auf dem Panel, sobald diese (Text) geändert werden erscheinen auf dem Panel die Buttons "Übernehmen" und "Abbrechen". Nun will ich verhindern, dass der User irgendwas auf dem Form klicken kann bevor er die Änderung übernimmt oder abbricht.

Danke!

Darlo 5. Jan 2015 13:58

AW: Panel als ShowModal?
 
Du kannst alle anderen Komponenten auf enabled := false; setzen. Aufwand hängt vom Design deiner Oberfläche ab.

OrNEC 5. Jan 2015 14:05

AW: Panel als ShowModal?
 
Zitat:

Zitat von Darlo (Beitrag 1285413)
Du kannst alle anderen Komponenten auf enabled := false; setzen. Aufwand hängt vom Design deiner Oberfläche ab.

Oh... das wird sehr aufwendig. Geht das nicht anders, einfacher?

DeddyH 5. Jan 2015 14:17

AW: Panel als ShowModal?
 
Du könntest doch im OnExit des Panels prüfen, ob
- ein Wert verändert wurde
- ActiveControl gesetzt ist
- dessen Parent gesetzt ist
- dieser Parent Dein Panel ist

Wenn die ersten Punke zutreffen und der letzte nicht, kannst Du ja ActiveControl auf das Panel oder eins der Edits setzen.
Delphi-Quellcode:
procedure TFormTest.Panel1Exit(Sender: TObject);
begin
  if FChanged then //FChanged wird bei Änderung eines Edits gesetzt
    if Assigned(ActiveControl) and Assigned(ActiveControl.Parent) and
      (ActiveControl.Parent <> Panel1) then
      ActiveControl := Edit1; //erstes Edit auf dem Panel
end;
Nur so eine Idee.

OrNEC 5. Jan 2015 14:43

AW: Panel als ShowModal?
 
Ob die Werte sich verändert haben prüfe ich wie folgt:

Delphi-Quellcode:
procedure TForm1.VornameEditKeyUp(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  OkBitBtn.Visible := True;
  CancelBitBtn.Visible := True;
end;
Wie weit kann damit Dein Vorschlag reduziert werden?

Wie wäre es mit: in OnExit des Panels prüfen, on die Buttons sichtbar sind und entsprechend eine Meldung ausgeben, ob die Werte übernommen werden sollen oder nicht? Ist doch auch eine Möglichkeit, oder?

DeddyH 5. Jan 2015 14:45

AW: Panel als ShowModal?
 
Es ist zwar nicht sonderlich elegant (bezgl. Trennung von Logik und Oberfläche), aber so sollte es auch gehen, ja.

Perlsau 5. Jan 2015 20:06

AW: Panel als ShowModal?
 
In meinen Datenbank-Anwendungen verwende ich gewöhnlich zwei Methoden – SchreibenErlaubt und SchreibenVerboten –, die jeweils vor dem Versetzen des betreffenden Queries in den Edit- oder Append-Modus bzw. Browsemodus aufgerufen werden. Dort stehen dann Sachen wie z.B.:
Delphi-Quellcode:
  DBGrid_Autoren.Enabled := False;
  Bit_Append.Enabled     := False;
  Bit_Edit.Enabled       := False;
  Bit_Post.Enabled       := True;
  Bit_Cancel.Enabled     := True;
  Bit_Delete.Enabled     := False;
  Bit_Close.Enabled      := False;
  DBEd_Vorname.ReadOnly  := False;
  DBEd_Nachname.ReadOnly := False;
  DBRich_Autoren.ReadOnly := False;
  DBEd_Vorname.SetFocus;
Eine andere Möglichkeit, gewisse Komponentenzustände zu ändern, sehe ich nicht. Programmieren ist eben eine aufwendige Angelegenheit :lol:


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:35 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz