jak złapać rozmiary komponentu dynamicznego

0

hej hej

ja po raz kolejny z tym pytaniem, bo różnie próbowałem a odpowiedzi nie dostałem :P (rym) wtedy poradziłem sobie inaczej, ale teraz nie mogę i muszę znać wysokość komponentu.
Dynamicznie tworze TPanel, na nim TImage i TLabel, teraz jeśli TPanel rozszeżając się zwiększy swoje rozmiary to delphi mi poda te które ja mu wpisałem a nie te jakie TPanel ma obecnie :( i ja nie wiem jak, kolega kiedyś powiedział zeby sie pobawić Anchors, ale różnie próbowałem i dalej nie umię zmierzyć komponentu dynamicznego :( plis help

i wesołego jaja,tylko się nie przejedzcie

0

swoje rozmiary to delphi mi poda te które ja mu wpisałem a nie te jakie TPanel ma obecnie

...WHAT?

procedure TForm1.FormCanResize(Sender: TObject; var NewWidth,
  NewHeight: Integer; var Resize: Boolean);
begin
  Edit1.Text := IntToStr(Panel1.Height);
end;

Postaw Edit i Panel, pobaw sie panelem (tj zmien np anchors, albo alClient etc) uruchom program i co widzisz?

0

no jak przy tworzeniu go podam Width := 100; a potem obrazek w TImage bedzie wiekszy to TPanel sie powiekszy, ale TPanel.Width delphi mi poda 100 a widze ze jest wiekszy,
dziex za cynk Wolverine zaraz popróbuje

0

no jak przy tworzeniu go podam Width := 100; a potem obrazek w TImage bedzie wiekszy to TPanel sie powiekszy, ale TPanel.Width delphi mi poda 100 a widze ze jest wiekszy,
dziex za cynk Wolverine zaraz popróbuje

TPanel sam sie nie powieksza... rozmiary sa podawane.
Nawet przy opcji autosize podawany jest rozmiar rzeczywisty, czyli taki jaki widac
moze Cie nie rozumiem...albo sie nie znam ;)

0

Jeżeli dobrze zrozumiałem, to na Panelu jest TImage...
Może spróbuj uzyskać Height Imaga ?

0

dokladnie mam cos takiego, chce zrobic tumbnails z Treeview w expandzie Tree daje ta procedurke:

procedure TFormTree.paneliki(nod : TTreeNode; szer : integer = 100);
var
 git : TTreeNode;
 a,i,x,y,w,br : integer;
 Paneliki: TPanel;
 labelki: TJvLinkLabel;
 imadze: TImage;
begin
  w:= ScrollBox1.ComponentCount;
  if w>0 then for x:=(w-1) downto 0 do ScrollBox1.Components[x].Free;
  szer := 100; br := 20;
  x := br; y := br;
  a := 0;
  //tutaj oblicza zeby panele ladnie sie miescily w scrollu
  w := (ScrollBox1.Width div szer);
  panMAIN.Caption:= IntToStr(w);
if ScrollBox1.Width >= (w*(szer + br)+10) then
  br := ((ScrollBox1.Width - (w*szer))-5) div (w+1)
  else begin
  w := w-1;
  br := ((ScrollBox1.Width - (w*szer))-5) div (w+1);
  end;
i:=0;
git := nod.getFirstChild;
while git <> nil do
 begin
    if i=0 then
      begin
      x:=br;
      if a<>0 then y:=(y + szer + 20);
      panMAIN.Caption:= IntToStr(y);
      end
    else x:=(x + szer + br);

    Paneliki := TPanel.Create(ScrollBox1);
    with Paneliki do
        begin
        parent := ScrollBox1;
        Left := x;
        Top := y;
        Anchors := [akLeft,akTop];
        Height := szer;
        Width := szer;
        Hint := git.Text;
        ShowHint := True;
        //++++++++
        imadze := TImage.Create(Paneliki);
        with imadze do
          begin
          Parent := Paneliki;
          Align := alNone;
          Top := 1;
          Left := 5;
          Width := 90;
          Height := 80;
          Proportional := True;
          Picture := Image1.Picture;
          end;
        //++++++++
        labelki := TJvLinkLabel.Create(Paneliki);
        with labelki do
          begin
          Parent := Paneliki;
          Top := 85;
          Left := 4;
          Width := 92;
          AutoSize := True;
          Constraints.MaxWidth := 92;
          Caption := git.Text;
          end;
        //--------
        end;
    if i<(w-1) then i:=i+1 else
      begin
      a:=a+1;
      i:=0;
      end;
    git := nod.GetNextChild(git);
 end;//end while

 //ten jeden zeby sie nie konczylo dolkadnie z skrolem
Paneliki := TPanel.Create(ScrollBox1);
with Paneliki do
        begin
        parent := ScrollBox1;
        Height := 1;
        Width := 1;
        Left := 10;
        Top := y + szer + 10;
        end;
label6.Caption := PathDrzewa(nod);
end;

no a jak TjvLinkedLabel mi sie rozszerza w dół to rozciaga panele i teraz poleceniem

for x:=0 to ScrollBox1.ComponentCount-1 do
JvLinkLabel1.Caption := JvLinkLabel1.Caption + IntToStr(TPanel(ScrollBox1.Components[x]).Height)+'; ';

no i mi wypisuje zawsze 103,103,103 nawet nie wiem czemu, a one na oko sie różnią wysokościa bo przesz widze :P
pliss moze ktos to poprawi :D i mi powie co nie tak i to zadziała?

0

nie mam pod ręką delphi, wiec nie sprawdze, ale:

czy danie:

with imadze do
begin
[...]
AutoSize:=False;
[...]
end;

coś zmienia ?

0

no okej, TImage maja miec stala wielkosc, autosize poprawilem, bo bylo wczesniej ale poźniej zjadłem gdzieś, to co jest u mnie wyglada tak:
http://www.antagonist.republika.pl/pliki/paneliki.JPG
i teraz zeby to ładnie porozsówać potrzebuje wysokosci paneli, ale ja juz tym wszystkim :-[ ze tak powiem i nie wiem jak to osiagnac

1 użytkowników online, w tym zalogowanych: 0, gości: 1