AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

TTabcontrol - OnExit funktioniert nicht wie erwartet

Ein Thema von idefix2 · begonnen am 30. Okt 2016 · letzter Beitrag vom 1. Nov 2016
Antwort Antwort
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.399 Beiträge
 
Delphi 12 Athens
 
#1

AW: TTabcontrol - OnExit funktioniert nicht wie erwartet

  Alt 30. Okt 2016, 13:22
Delphi-Quellcode:
type
  TExitFormHelper = class helper for TForm
  private type
    TProtectedControl = class(TWinControl);
  public
    procedure CheckOnExit(WithOnEnter: Boolean=False);
  end;

procedure TExitFormHelper.CheckOnExit(WithOnEnter: Boolean);
begin
  if not Assigned(Self.ActiveControl) then
    Exit;
  TProtectedControl(ActiveControl).DoExit;
  if WithOnEnter then
    TProtectedControl(ActiveControl).DoEnter;
end;
Und dann halt im OnCloseQuery/OnClose/OnDestroy und eben in den ClickEvents von Menüs/SpeedButtons das CheckOnExit aufrufen.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
idefix2

Registriert seit: 17. Mär 2010
Ort: Wien
1.027 Beiträge
 
RAD-Studio 2009 Pro
 
#2

AW: TTabcontrol - OnExit funktioniert nicht wie erwartet

  Alt 30. Okt 2016, 16:16
Das ist aber ein ordentlicher Mist.
Das heisst so viel, wie dass ich mich bei jeder Aktion, die irgendwo in der Form ausgelöst wird, speziell bei jedem Untermenüpunkt der Hauptmenüs um das Sichern des Tab-Inhalts kümmern muss. Und wenn später einmal irgendwer das Menü erweitert oder einen Speedbutton einbaut oder sonst irgend etwas derartiges macht und auf das Aktualisieren der Tabsheetdaten vergisst, dann freut sich der Anwender des geupdateten Programms

@Himitsu
Den Sinn von deinem Exitformhelper sehe ich nicht so recht -
weder, wozu es gut sein könnte, nach onexit gleich wieder onenter aufzurufen
noch was es beim Handling gegenüber dem direkten Aufruf von Tabcontrol.doexit einfacher oder besser macht - wenn man nicht zufällig mehrere tabcontrols auf der Form hat und die alle aktualisieren will.
Beim den Menüs ist es besonders lästig, weil da gibt es anscheinend keinen Event, der aktiviert wird, wenn irgend ein Menüeintrag angeklickt worden ist, da muss man die Reaktion in jeden Menüeintrag einbauen.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.399 Beiträge
 
Delphi 12 Athens
 
#3

AW: TTabcontrol - OnExit funktioniert nicht wie erwartet

  Alt 30. Okt 2016, 16:24
Wenn beim OnExit etwas deaktiviert wird und beim OnEnter aktiviert, an wäre das sonst inaktiv, obwohl der Fokus immernoch in dem Control ist. (oder andersrum)

Aus diesem Grund verwenden einige Leute niemals pure Controls, sondern leiten alles immer ab (auch wenn erstmal noch nicht verändert wurde)
So kann man dann später global ein Verhalten einbauen/ändern, ohne noch irgendwas ändern zu müssen.

Bei den Menüs kann man das aber auch ins OnPopup einbauen, dann ist das schon erledigt, bevor irgendein Menüpunkt angeklickt wurde.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (30. Okt 2016 um 16:27 Uhr)
  Mit Zitat antworten Zitat
idefix2

Registriert seit: 17. Mär 2010
Ort: Wien
1.027 Beiträge
 
RAD-Studio 2009 Pro
 
#4

AW: TTabcontrol - OnExit funktioniert nicht wie erwartet

  Alt 30. Okt 2016, 17:07
Hmm
Das einzige Event des Hauptmenüs, das im OI angezeigt wird, ist OnChange, ein OnPopup gibt es da nicht.
Das Hauptmenu ist ja auch kein Popup-menu.
Angehängte Grafiken
Dateityp: png mainmenu.PNG (7,0 KB, 8x aufgerufen)

Geändert von idefix2 (30. Okt 2016 um 17:14 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.399 Beiträge
 
Delphi 12 Athens
 
#5

AW: TTabcontrol - OnExit funktioniert nicht wie erwartet

  Alt 30. Okt 2016, 17:25
Hmm, gab es beim MainMenu nicht auch sowas wie OnPopup?
Irgendwas, wo man vor dem Anzeigen noch schnell am Menü rumspielen kann? (Items Erstellen, Dis./Enablen oder sie Checkboxen)

Bei den Hauptmenüpunkten kann man auch OnClick benutzen ... OnClick wird beim Aufpoppen des Submenüs ausgelöst.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
idefix2

Registriert seit: 17. Mär 2010
Ort: Wien
1.027 Beiträge
 
RAD-Studio 2009 Pro
 
#6

AW: TTabcontrol - OnExit funktioniert nicht wie erwartet

  Alt 30. Okt 2016, 19:44
irgendwie macht mich das wahnsinnig. Jetzt wollte ich ein TMainMenuItem von TMenuItem ableiten, in dem ich OnClick überschreibe, um an der Stelle halbwegs zentral meine Sheets zu sichern, wenn ein Punkt des hauptmenüs aufgerufen wird.
Bloss, es kommt die Fehlermeldung "Methode OnClick nicht in Basiskasse gefunden."
Aber die Basisklasse HAT ein OnClick-Ereignis. Was mache ich da falsch?
Angehängte Grafiken
Dateityp: png OnClick.PNG (13,3 KB, 10x aufgerufen)
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#7

AW: TTabcontrol - OnExit funktioniert nicht wie erwartet

  Alt 30. Okt 2016, 20:05
Schau doch mal in den Quellen von Delphi nach (sofern Du sie bei Deiner Delphiversion dabei hast) wie dort bei TMenuItem OnClick definiert ist.

Bei Delphi 7 sieht das so aus:property OnClick: TNotifyEvent read FOnClick write FOnClick stored IsOnClickStored;

Geändert von nahpets (31. Okt 2016 um 10:20 Uhr) Grund: So wenig Text und so viele Schreibfehler :-(
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:08 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