![]() |
Re: Herausfinden wie viele Panels auf einen Panel liegen
Habs jetzt so angepasst:
Delphi-Quellcode:
Leider kommt hier eine Zugriffsverletzung beim Aufruf der Funktion:
function ArrangeExPanel(Sender : TObject):Boolean;
var i: Integer; useEdit: TSpeedButton; useDelete: TSpeedButton; sl: TStringlist; begin if Sender.ClassType=TPanel then begin sl:=TStringList.Create; repeat sl.add((Sender as TPanel).FindComponent('ExPanel').name); //hier kommt eine zugriffsverletzung until (Sender as TPanel).FindComponent('ExPanel').name=''; begin for i:=0 to sl.count-1 do begin useEdit:=((Sender as TPanel).FindComponent('Edit_'+sl.strings[i]) as TSpeedButton); useDelete:=((Sender as TPanel).FindComponent('Delete_'+sl.strings[i]) as TSpeedButton); useDelete:=(useDelete as TSpeedButton); useEdit:=(useEdit as TSpeedButton); useEdit.Left:=(Sender as TPanel).Width-3; useDelete.Left:=(Sender as TPanel).Width-87; end; end; sl.free; Result:=true; end else begin Result:=false; end; end;
Delphi-Quellcode:
Was nun?
sl.add((Sender as TPanel).FindComponent('ExPanel').name); //hier kommt eine zugriffsverletzung
|
Re: Herausfinden wie viele Panels auf einen Panel liegen
Habs jetzt anders gelöst. Verwende nun eine globale StringList um die ExPanels zu verwalten:
Delphi-Quellcode:
function ArrangeExPanel(Sender : TObject):Boolean;
var i: Integer; useEdit: TSpeedButton; useDelete: TSpeedButton; begin //überprüfen ob das onResize-Ereignis von einen Panel kommt if (Sender is TPanel) then begin for i:=0 to ExPanels.Count-1 do begin //Edit-Button finden und zuweisen useEdit:=((Sender as TPanel).FindComponent('Edit_'+ExPanels.strings[i]) as TSpeedButton); //Delete-Button finden und zuweisen useDelete:=((Sender as TPanel).FindComponent('Delete_'+ExPanels.strings[i]) as TSpeedButton); //useDelete:=(useDelete as TSpeedButton); //useEdit:=(useEdit as TSpeedButton); //Edit-Button verschieben useEdit.Left:=(Sender as TPanel).Width-3; //Delete-Button verschieben useDelete.Left:=(Sender as TPanel).Width-87; end; Result:=true; end else begin Result:=false; end; end; |
Re: Herausfinden wie viele Panels auf einen Panel liegen
Hallo Andy,
ich bin mir nicht sicher, ob ich verstehe, was du da treibst, aber wenn es das automatische Ausrichten von SpeedButtons nach einer Größenänderung des ParentControls (ExPanel) ist, dann könntest du auch einfach die Anchors-Eigenschaft der SpeedButtons verwenden und ihnen zusehen, wenn sie sich selbst neu ausrichten. Nachdenkliche Grüße vom marabu |
Re: Herausfinden wie viele Panels auf einen Panel liegen
Zitat:
|
Re: Herausfinden wie viele Panels auf einen Panel liegen
Hallo Andy,
nimm eine leere Form und packe ein Panel drauf mit Align = alClient. Auf das Panel packst du einen SpeedButton und setzt im Object Inspector die Eigenschaft Anchors so wie du es gerne hättest. Setze mal den Anker für rechts und unten auf true und die beiden anderen auf false. Wenn du deine Form dann anzeigst und in der Größe veränderst, dann wirst du sehen und verstehen. Grüße vom marabu |
Re: Herausfinden wie viele Panels auf einen Panel liegen
Ahh, nicht mal so schwer ;-)
Danke :thumb: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:26 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