AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Herausfinden wie viele Panels auf einen Panel liegen
Thema durchsuchen
Ansicht
Themen-Optionen

Herausfinden wie viele Panels auf einen Panel liegen

Ein Thema von Andreas L. · begonnen am 29. Mär 2006 · letzter Beitrag vom 1. Apr 2006
Antwort Antwort
Seite 2 von 2     12   
Andreas L.
(Gast)

n/a Beiträge
 
#11

Re: Herausfinden wie viele Panels auf einen Panel liegen

  Alt 31. Mär 2006, 10:47
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:

sl.add((Sender as TPanel).FindComponent('ExPanel').name); //hier kommt eine zugriffsverletzung Was nun?
  Mit Zitat antworten Zitat
Andreas L.
(Gast)

n/a Beiträge
 
#12

Re: Herausfinden wie viele Panels auf einen Panel liegen

  Alt 31. Mär 2006, 13:24
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;
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#13

Re: Herausfinden wie viele Panels auf einen Panel liegen

  Alt 31. Mär 2006, 16:46
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
  Mit Zitat antworten Zitat
Andreas L.
(Gast)

n/a Beiträge
 
#14

Re: Herausfinden wie viele Panels auf einen Panel liegen

  Alt 1. Apr 2006, 12:02
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?
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#15

Re: Herausfinden wie viele Panels auf einen Panel liegen

  Alt 1. Apr 2006, 18:13
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
  Mit Zitat antworten Zitat
Andreas L.
(Gast)

n/a Beiträge
 
#16

Re: Herausfinden wie viele Panels auf einen Panel liegen

  Alt 1. Apr 2006, 19:13
Ahh, nicht mal so schwer
Danke
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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:32 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