AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Objecteigenschaften während der Laufzeit ändern
Thema durchsuchen
Ansicht
Themen-Optionen

Objecteigenschaften während der Laufzeit ändern

Ein Thema von Torwein · begonnen am 8. Dez 2014 · letzter Beitrag vom 10. Dez 2014
 
Torwein

Registriert seit: 6. Dez 2011
11 Beiträge
 
#13

AW: Objecteigenschaften während der Laufzeit ändern

  Alt 8. Dez 2014, 16:15
Delphi-Quellcode:
unit Haupfenster;

interface

uses
  System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
  FMX.Types, FMX.Graphics, FMX.Controls, FMX.Forms, FMX.Dialogs, FMX.StdCtrls,
  FMX.Layouts, FMX.Ani, FMX.Objects, Contnrs;

type
  TForm1 = class(TForm)
    StyleBook1: TStyleBook;
    ProduktMeneu: TPanel;
    Oben: TPanel;
    Seite: TPanel;
    FlowLayout2: TFlowLayout;
    Waermepumpe: TExpander;
    Solar: TExpander;
    Expander3: TExpander;
    Lueftung: TExpander;
    Start: TPanel;
    Unten: TPanel;
    ImageControl7: TImageControl;
    Image1: TImage;
    FloatAnimation1: TFloatAnimation;
    FloatAnimation2: TFloatAnimation;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    Label8: TLabel;
    Label9: TLabel;
    Label10: TLabel;
    Label11: TLabel;
    Label12: TLabel;
    Image2: TImage;
    Image3: TImage;
    Label13: TLabel;
    Label14: TLabel;
    Image4: TImage;
    Image5: TImage;
    Image6: TImage;
    Label15: TLabel;
    Image7: TImage;
    Label16: TLabel;
    Image8: TImage;
    Label17: TLabel;
    Label18: TLabel;
    Menue: TPanel;
    FloatAnimation3: TFloatAnimation;
    FloatAnimation4: TFloatAnimation;
    Image9: TImage;
    Label19: TLabel;
    Image11: TImage;
    Label21: TLabel;
    Image12: TImage;
    Label22: TLabel;
    Image13: TImage;
    Label23: TLabel;
    Image10: TImage;
    Label20: TLabel;
    Image14: TImage;
    Label24: TLabel;
    Image15: TImage;
    Label25: TLabel;
    ImageControl1: TImageControl;
    ImageControl2: TImageControl;
    ImageControl3: TImageControl;
    ImageControl4: TImageControl;
    ImageControl5: TImageControl;
    Image16: TImage;
    Image17: TImage;
    Label26: TLabel;
    Expander1: TExpander;
    Image18: TImage;
    procedure FormResize(Sender: TObject);
    procedure ImageControl7Click(Sender: TObject);
    function panelzoom():boolean;
    function buttonzoom():boolean;
    function buttonzoomout():boolean;
    procedure Image4Click(Sender: TObject);
    procedure Image8Click(Sender: TObject);
    procedure ImageControl1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

  
  TExpanderNeu = class(TExpander)
    private
    public
      constructor Create(AOwner: TComponent); override;
      destructor Destroy; override;
      procedure groß(Sender: TObject);
      procedure klein(Sender: TObject);
  end;

var
  Form1: TForm1;
  y, i,j,x,test: integer;
  progPfad,datei2 : string;
  ExpanderArray: array of TExpanderNeu;

implementation

{$R *.fmx}

constructor TExpanderNeu.Create;
begin
  inherited;
end;

destructor TExpanderNeu.Destroy;
begin
 inherited;
end;

procedure TExpanderNeu.groß(Sender: TObject);
begin
  StyleLookup := 'expanderstyle';
  Width := 300;
end;


procedure TExpanderNeu.klein;
begin
  BeginUpdate;
    StyleLookup := 'expanderstyleneu';
    Width := 125;
  EndUpdate;
end;

procedure createBild(AOwner: TFmxObject);
var
  newBild :Timage;
begin
newBild := TImage.Create(AOwner);
with newBild do begin
      parent := AOwner;
      Bitmap.CreateFromFile(Pchar(Progpfad+'Bilder\Lueftung.png'));
      position.X := 222;
      position.Y := -24;
      height := 125;
      width := 78;
    end;
end;

procedure createExpanderNeu(AOwner: TFmxObject; labelText : String; posX, posY, hoehe, breite,i : integer);
var
  Expander : TExpanderNeu;
begin
  SetLength(ExpanderArray,Length(ExpanderArray)+1);
  ExpanderArray[i] := TExpanderNeu.Create(AOwner);
  with Expander do begin
      ExpanderArray[i].Parent := Form1.FlowLayout2;
      ExpanderArray[i].HitTest := true;
      ExpanderArray[i].Text := labelText;
      ExpanderArray[i].Cursor := crHandPoint;
      ExpanderArray[i].height := hoehe;
      ExpanderArray[i].width := breite;
  end;
  createBild(ExpanderArray[i]);
end;

function TForm1.panelzoom():boolean;
begin
  if y <> 99 then begin
    i := 1;
    y := 99;
  end;
  if i = 1 then begin
    FloatAnimation2.Enabled := false;
    FloatAnimation1.Enabled := true;
    imagecontrol7.LoadFromFile(Progpfad+'Bilder\Icons\Pfeil_links_schwarz.png');
    i := 0;
  end else
  begin
    FloatAnimation1.Enabled := false;
    FloatAnimation2.Enabled := true;
    imagecontrol7.LoadFromFile(Progpfad+'Bilder\Icons\Pfeil_Rechts_schwarz.png');
    i := 1;
  end;
end;

function TForm1.buttonzoom():boolean;
var
panel : TExpanderNeu;
begin
  Waermepumpe.StyleLookup := 'expanderstyleneu';
  Waermepumpe.Width := 125;
  solar.StyleLookup := 'expanderstyleneu';
  solar.Width := 125;
  expander3.StyleLookup := 'expanderstyleneu';
  expander3.Width := 125;
  lueftung.StyleLookup := 'expanderstyleneu';
  lueftung.Width := 125;
end;

function TForm1.buttonzoomout():boolean;
begin
  Waermepumpe.StyleLookup := 'expanderstyle';
  Waermepumpe.Width := 300;
  solar.StyleLookup := 'expanderstyle';
  solar.Width := 300;
  expander3.StyleLookup := 'expanderstyle';
  expander3.Width := 300;
  lueftung.StyleLookup := 'expanderstyle';
  lueftung.Width := 300;
end;

procedure TForm1.FormCreate(Sender: TObject);
var
  i : integer;
  text: array[1..10]of string;
  AOwner: TFmxObject;
begin
  ProgPfad := ExpandFileName('KPN.exe');
  delete(ProgPfad,length(ProgPfad)-6,256);
  text[1]:= 'Wärmepumpe';
  text[2]:= 'Solar';
  text[3]:= 'Lüftung';
  text[4]:= 'Heizkessel';
  text[5]:= 'Speicher';
  SetLength(ExpanderArray,0);
    for i := 1 to 5 do begin
      createExpanderNeu(image6,Text[i], 222, -24, 125, 300,i);
    end;
  label26.Text := IntToStr(Flowlayout2.ChildrenCount);
end;

procedure TForm1.FormResize(Sender: TObject);
var
zaehler : integer;
begin
  if y <> 99 then begin
    i := 1;
    y := 99;
  end;
  if Form1.Width < 300*2.2 then begin
    for zaehler := 0 to Length(ExpanderArray) - 1 do
    begin
        ExpanderArray[zaehler].klein(ExpanderArray[zaehler])
    end;
    buttonzoom;
    if (ProduktMeneu.Width > 200) and (i = 1) then begin
      panelzoom();
      Label18.Visible := false;
      i := 0;
    end;
  end else begin
    buttonzoomout;
    if (ProduktMeneu.Width < 200) and (i = 0) then begin
      panelzoom();
      Label18.Visible := true;
      i := 1;
    end;
  end;
end;

procedure TForm1.Image4Click(Sender: TObject);
begin
  start.Enabled :=false;
  start.Visible := false;
end;

procedure TForm1.Image8Click(Sender: TObject);
begin
if x <> 99 then begin
    j := 1;
    x := 99;
  end;
  if j = 1 then begin
    FloatAnimation4.Enabled := false;
    FloatAnimation3.Enabled := true;
    j := 0;
  end else begin
    FloatAnimation3.Enabled := false;
    FloatAnimation4.Enabled := true;
    j := 1;
  end;
end;

procedure TForm1.ImageControl1Click(Sender: TObject);
var
Expander : TExpanderNeu;
begin
  if test <> 1 then begin
    imagecontrol1.LoadFromFile(Progpfad+'Bilder\Icons\icon-biomasse-xl.png');
    waermepumpe.Visible := true;
    solar.Visible := false;
    ExpanderArray[i].Destroy;
// solar.Destroy;
// expander3.Enabled := false;
    lueftung.Visible := false;
// lueftung.Destroy;
    test :=1;
    flowlayout2.Width :=0;
  end else begin
    imagecontrol1.LoadFromFile(Progpfad+'Bilder\Icons\icon-biomasse-weiss-xl.png');
    waermepumpe.Visible := true;
    solar.Visible := true;
// expander3.Enabled := false;
    lueftung.Visible := true;
    test :=2;
    flowlayout2.Width :=0;
  end;
end;

procedure TForm1.ImageControl7Click(Sender: TObject);
begin
  panelzoom()
end;

end.
Ich denke das der Teil des Programms nicht ganz in Ordnung ist
Delphi-Quellcode:
procedure createExpanderNeu(AOwner: TFmxObject; labelText : String; posX, posY, hoehe, breite,i : integer);
var
  Expander : TExpanderNeu;
begin
  SetLength(ExpanderArray,Length(ExpanderArray)+1);
  ExpanderArray[i] := TExpanderNeu.Create(AOwner);
  with Expander do begin
      ExpanderArray[i].Parent := Form1.FlowLayout2;
      ExpanderArray[i].HitTest := true;
      ExpanderArray[i].Text := labelText;
      ExpanderArray[i].Cursor := crHandPoint;
      ExpanderArray[i].height := hoehe;
      ExpanderArray[i].width := breite;
  end;
  createBild(ExpanderArray[i]);
end;
Delphi-Quellcode:
SetLength(ExpanderArray,0);
    for i := 1 to 5 do begin
      createExpanderNeu(image6,Text[i], 222, -24, 125, 300,i);
    end;
Das Programm lässt sich compilieren und funktioniert außer dem Problem mit dem ändern der Eigenschaften. Wenn ich das Programm schließe kommt aber eine Exeption. Kommentiere ich den Teil createExpanderNeu(image6,Text[i], 222, -24, 125, 300,i); aus kommt keine Exeption. Ich vermute das das alles miteinander zusammenhängt. Ich bin echt ratlos.
  Mit Zitat antworten Zitat
 


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 11:24 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