AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Insert einer Komponente in einem TWinControl erkennen
Thema durchsuchen
Ansicht
Themen-Optionen

Insert einer Komponente in einem TWinControl erkennen

Ein Thema von backdraft · begonnen am 2. Mai 2010 · letzter Beitrag vom 2. Mai 2010
 
daywalker9

Registriert seit: 1. Jan 2010
Ort: Leer
594 Beiträge
 
Delphi XE3 Professional
 
#4

Re: Insert einer Komponente in einem TWinControl erkennen

  Alt 2. Mai 2010, 18:20
Was du machen könntest ist, dir von dem jeweiligen Control eine ableitung schreiben und die SetParent funktion überschreiben. Und dort dann gucken ob der Parent dein Panel ist und wenn ja rufst du eine Funktion von dem Panel auf

//edit:
Delphi-Quellcode:
procedure TWinControl.InsertControl(AControl: TControl);
var
  Item: TControlListItem;
begin
  AControl.ValidateContainer(Self);
  Item.Control := AControl;
  Item.Parent := Self;
{$IF DEFINED(CLR)}
  ControlListChanging(True, Item);
  if Item.Parent <> Self then Exit;
  ControlListChange(True, AControl);
{$ELSE}
  Perform(CM_CONTROLLISTCHANGING, Integer(@Item), Integer(True));
  if Item.Parent <> Self then Exit;
  Perform(CM_CONTROLLISTCHANGE, Integer(AControl), Integer(True));
{$IFEND}
  Insert(AControl);
  if not (csReading in AControl.ComponentState) then
  begin
    AControl.Perform(CM_PARENTCOLORCHANGED, 0, 0);
    AControl.Perform(CM_PARENTFONTCHANGED, 0, 0);
    AControl.Perform(CM_PARENTSHOWHINTCHANGED, 0, 0);
    AControl.Perform(CM_PARENTBIDIMODECHANGED, 0, 0);
    AControl.Perform(CM_PARENTDOUBLEBUFFEREDCHANGED, 0, 0);
    AControl.Perform(CM_PARENTTABLETOPTIONSCHANGED, 0, 0);
    if AControl is TWinControl then
    begin
      AControl.Perform(CM_PARENTCTL3DCHANGED, 0, 0);
      UpdateControlState;
    end else
      if HandleAllocated then AControl.Invalidate;
    AlignControl(AControl);
  end;
{$IF DEFINED(CLR)}
  ControlChange(True, AControl);
{$ELSE}
  Perform(CM_CONTROLCHANGE, Integer(AControl), Integer(True));
{$IFEND}
end;
Oder die Message CM_CONTROLLISTCHANGE abfangen
Lars
  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 02:55 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