Delphi-PRAXiS
Seite 8 von 9   « Erste     678 9      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Objekte zur Laufzeit erzeugen (https://www.delphipraxis.net/180410-objekte-zur-laufzeit-erzeugen.html)

Dejan Vu 22. Jun 2014 18:53

AW: Objekte zur Laufzeit erzeugen
 
Was hält dich davon ab, im OnResize einfach deine Controls programmtechnisch neu auszurichten? Das machst Du doch am, Anfang auch?

Luki206 22. Jun 2014 19:11

AW: Objekte zur Laufzeit erzeugen
 
Ja nur weiß ich nicht wie ich auf die Buttons wieder zugreifen soll.. Über die objectlist weiß ich nicht wie ich auf die Buttons zugreife.

Aviator 22. Jun 2014 19:26

AW: Objekte zur Laufzeit erzeugen
 
Du kannst entweder den Buttons beim Erstellen einen Namen geben (was sinnvoll wäre) oder immer durch die Komponenten der Form laufen und den Button entsprechend suchen. FindComponent bringt dir an der Stelle nix, da du keine Namen vergeben hast.

himitsu 22. Jun 2014 19:34

AW: Objekte zur Laufzeit erzeugen
 
Oder wie wäre es, wenn du die Buttons in andere Komponenten reinpackst?

- Diese kann man dann mit Anchor/Align ausrichten
- oder man nimmt ausrichtende Komponenten (TFlowPanel/TGridPanel)
- ...

Captnemo 22. Jun 2014 19:34

AW: Objekte zur Laufzeit erzeugen
 
Delphi-Quellcode:
for i:= 0 to FButtons.count-1 do
Beginn
  FButtons[i].left:=10; //oder was auch immer
  fButtons[i].top:=10; //ist ja nur ein Bespiel
End;
Ist doch eine Objectlist wenn ich das richtig gesehen.

Perlsau 22. Jun 2014 20:10

AW: Objekte zur Laufzeit erzeugen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von Luki206 (Beitrag 1263185)
Ich muss mich hier noch einmal melden :hi: Jetzt stehe ich vor dem Problem das wenn ich die Form resizee bleiben die Buttons so in der Scrollbox wie sie auch erstellt wurden. Wie könnte ich es schaffen sie auszurichten ohne das sie ständig neu generiert werden müssen?

Wenn du deine visuellen Objekte in einer Objektliste verwaltest, mußt du doch nur die Objektliste durchgehen und die Position der Objekte neu berechnen. Ich mache das in meiner HTML-Template-Verwaltung eigentlich ganz einfach:
Delphi-Quellcode:
Function TVorschau.ZeichneBilder : Boolean;
Var
  x,y,
  i,z : Integer;
  Obj : TBild;

begin
  x := Allg.Bild_Abstand;
  y := Allg.Bild_Abstand;
  z := BList.Count;

  Try
    IF z > 0 THEN
    FOR i := 0 TO z-1 DO
    BEGIN
      Obj                  := BList[i];
      Obj.Bild.Left        := x;
      Obj.Bild.Top         := y;
      Obj.Bild.Width       := Allg.Bild_Breite;
      Obj.Bild.Height      := Allg.Bild_Hoehe;
      Obj.Bild.Visible     := True;

      Obj.Titel.Font       := VPanel.Font;
      Obj.Titel.Color      := Allg.BildTitel_Farbe;
      Obj.Titel.Width      := Allg.Bild_Breite;
      Obj.Titel.Height     := Allg.BildTitel_Hoehe;
      Obj.Titel.Left       := Obj.Bild.Left;
      Obj.Titel.Top        := Obj.Bild.Top + Allg.Bild_Hoehe;
      Obj.Titel.ShowHint   := True;
      Obj.Titel.Visible    := True;

      x := x + Allg.Bild_Breite + Allg.Bild_Abstand;
      IF x > (VPanel.ClientWidth - Allg.Bild_Breite - Allg.Bild_Abstand) THEN
      BEGIN
        x := Allg.Bild_Abstand;
        y := y + Allg.Bild_Abstand + Allg.Bild_Hoehe + Allg.BildTitel_Hoehe;
        IF VPanel.Height < (y + Allg.Bild_Abstand + Allg.Bild_Hoehe + Allg.BildTitel_Hoehe) THEN
           VPanel.Height := VPanel.Height + Allg.Bild_Abstand + Allg.Bild_Hoehe + Allg.BildTitel_Hoehe;
      END;
    END;

    Result := True;
  Except
    Result := False;
  End;
end;
Das Ergebnis ist durchaus zufriedenstellend, wie das angehängte Bild zeigt:

Luki206 23. Jun 2014 09:43

AW: Objekte zur Laufzeit erzeugen
 
Ach so, Ok. Vielen Dank :thumb: Wie könnte ich eigentlich das umbauen das es auch mit Firemonky funktioniert? Also das mit dem erstellen der Buttons?

stahli 23. Jun 2014 12:16

AW: Objekte zur Laufzeit erzeugen
 
@Luki206
Ich habe Deine Fragestellung nur schnell überflogen.
Für den Fall, dass Du hier etwas entnehmen kannst: http://www.delphipraxis.net/165177-scrollboxflow.html

Luki206 23. Jun 2014 15:25

AW: Objekte zur Laufzeit erzeugen
 
@Stahli: Beim ausführen der ScrollBoxFlowR.dproj bekomme ich folgenden Fehler bzw. mir wird angezeigt das ich die "acntDelphiXE_R" nicht habe:
Code:
[dcc32 Fataler Fehler] ScrollBoxFlowR.dpk(37): E2202 Package 'acntDelphiXE_R' wird benötigt, konnte aber nicht gefunden werden

stahli 23. Jun 2014 15:41

AW: Objekte zur Laufzeit erzeugen
 
Sorry, das ist ein älteres Package, das ich länger nicht mehr in der Hand hatte. Die acnt.. ist von den AlphaSkins, die ich damals eingesetzt hatte.

Ich denke, Du könntest die Verwendung einfach aus den benötigten Packages entfernen, bin aber jetzt nicht sicher, ob das reicht.

Sonst nimm einfach nur die pas zum testen ohne komplettes Package.


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:04 Uhr.
Seite 8 von 9   « Erste     678 9      

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