AGB  ·  Datenschutz  ·  Impressum  







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

Semitransparente Abdeckung eines Grids

Ein Thema von ULIK · begonnen am 12. Jan 2012 · letzter Beitrag vom 20. Jan 2012
 
Benutzerbild von ULIK
ULIK

Registriert seit: 25. Sep 2006
Ort: Regensburg
427 Beiträge
 
Delphi 11 Alexandria
 
#15

AW: Semitransparente Abdeckung eines Grids

  Alt 13. Jan 2012, 12:33
Fein!

Was mich noch interessieren würde: hast Du einmal versucht, einen OnClick Event zu verwenden? Das funktioniert bei mir hier nämlich gar nicht. Zum einen, wird der Event nicht an die Form übergeben. Hier müßte es wohl
Delphi-Quellcode:
procedure TSchleier.SetActive(const Value: Boolean);
begin
  if FActive = Value then exit;
  FActive := Value;
  if FActive then begin
    DoThunk;
    FHook := SetWindowsHookEx(WH_CALLWNDPROC, FStub, 0, GetCurrentThreadId);
    if FForm = nil then FForm := TSchleierForm.mgmCreate(TWinControl(HideControl.Owner));
    MessageText := MessageText;
    FForm.HideControl := HideControl;
    OnClick := OnClick; <-- ULIK: Event durchschleifen
    OnDblClick := OnDblClick; <-- ULIK: Event durchschleifen
  end
 
...
heißen. Zum anderen funktionieren die Events dann aber auch nicht, weil das Fenster die Nachricht nicht bekommt. Hier dürfte das Problem darin liegen, daß im FormActivate der TSchleierform der Fokus ja gleich wieder an das aufrufende Control zurückgegeben wird. Somit wird bei einem Mausklick die Schleierform erst aktiviert und verliert sofort wieder den Fokus, weswegen wohl dann die Messages des Mausklicks ins Leere laufen. Nimmt man die Rückfokusierung raus, dann geht's, aber gerade die Rückfokusierung ist eigentlich schon erforderlich.

Delphi-Quellcode:
procedure TSchleierForm.FormActivate(Sender: TObject);
begin
  if csdestroying in ComponentState then exit;
  if Hidecontrol = nil then exit;

  // exit; here and events are working

  if (oOverForm <> nil) and (TCustomForm(oOverForm).Canfocus) and (oOverForm.Enabled) and (oOverForm.visible)
    then TCustomForm(oOverForm).SetFocus;
end;
Hast Du eine Idee, wie man das lösen könnte?


Grüße,
Uli
  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 09:14 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