AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi In virt. Meth. wird stat. Meth. aufgerufen, diese Verdecken?
Thema durchsuchen
Ansicht
Themen-Optionen

In virt. Meth. wird stat. Meth. aufgerufen, diese Verdecken?

Ein Thema von APP · begonnen am 22. Apr 2003 · letzter Beitrag vom 23. Apr 2003
 
Benutzerbild von APP
APP

Registriert seit: 24. Feb 2003
Ort: Graz (A)
705 Beiträge
 
Delphi 7 Enterprise
 
#1

In virt. Meth. wird stat. Meth. aufgerufen, diese Verdecken?

  Alt 22. Apr 2003, 06:57
Hallo,
Ich möchte verhindern, dass ein Modales Fenster unter bestimmten Umständen geschlossen wird.
[EDIT] Das Programm soll aber weiterlaufen, auch wenn das Fenster geöffnet bleibt. [/EDIT]

(Siehe auch Thread)
Dort Überschrieb ich die Methode ShowModal, diese Lösung ist aber nicht sehr elegant.

Daher untersuchte ich die Methode ShowModal etwas genauer:

in der
Delphi-Quellcode:
function TCustomForm.ShowModal: Integer;
var
...
begin
...
  try
    Show;
    try
...
    finally
      Hide; // <---------------------------------
    end;
  finally
...
  end;
end;
befindet sich u.a. der Aufruf von Hide, den ich Überschreiben wollte.

Hide ist aber eine statische Methode:

Delphi-Quellcode:
procedure TCustomForm.Hide;
begin
  Visible := False;
end;
Wenn ich nun folgendes schreibe

Delphi-Quellcode:
TYPE
   TForm3 = CLASS(TForm)
   PRIVATE
      FDebugMode: Boolean;
   PUBLIC
      PROCEDURE Hide; // Static, d.h. nicht Override-bar
      PROPERTY DebugMode: Boolean READ FDebugMode WRITE FDebugMode;
   END;

PROCEDURE TForm3.Hide;
BEGIN
   IF DebugMode AND (fsModal IN self.FormState) THEN
   ELSE
      Visible := False; // Original-Code
END;
wird nach

Delphi-Quellcode:
PROCEDURE TForm1.Button2Click(Sender: TObject);
VAR
   aDebugForm : TForm3;
BEGIN
   aDebugForm := TForm3.Create(self);
   aDebugForm.DebugMode := TRUE;
   aDebugForm.Showmodal; // Hier gibt es ein "Hide"
END;
trotzdem TCustomForm.Hide und nicht "mein" Hide aufgerufen,
kann ich das irgendwie verhindern (ausser das ich die VCL patche) ?


p.s. Mir ist klar das dieses Verhalten die Regeln der OOP befolgt (zumindest jene die mir geläufig sind), aber trotzdem: Es muß doch noch einen anderen Weg geben, oder?
Armin P. Pressler

BEGIN
...real programmers are using C/C++ - smart developers Delphi;
END;
  Mit Zitat antworten Zitat
 


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 03:48 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