Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Herausfinden wie viele Panels auf einen Panel liegen (https://www.delphipraxis.net/66449-herausfinden-wie-viele-panels-auf-einen-panel-liegen.html)

Andreas L. 31. Mär 2006 09:47

Re: Herausfinden wie viele Panels auf einen Panel liegen
 
Habs jetzt so angepasst:

Delphi-Quellcode:
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;
Leider kommt hier eine Zugriffsverletzung beim Aufruf der Funktion:

Delphi-Quellcode:
sl.add((Sender as TPanel).FindComponent('ExPanel').name); //hier kommt eine zugriffsverletzung
Was nun?

Andreas L. 31. Mär 2006 12:24

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;

marabu 31. Mär 2006 15:46

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

Andreas L. 1. Apr 2006 11:02

Re: Herausfinden wie viele Panels auf einen Panel liegen
 
Zitat:

Zitat von marabu
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

Kannst du mir das genauer erklären? Also, wie funktioniert das mit Anchors?

marabu 1. Apr 2006 17:13

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

Andreas L. 1. Apr 2006 18:13

Re: Herausfinden wie viele Panels auf einen Panel liegen
 
Ahh, nicht mal so schwer ;-)
Danke :thumb:


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:51 Uhr.
Seite 2 von 2     12   

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