Einzelnen Beitrag anzeigen

Torwein

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

Objecteigenschaften während der Laufzeit ändern

  Alt 8. Dez 2014, 13:33
Delphi-Version: XE6
Ich möchte in FireMonkey die Eigeschaften von einem Expander ändern z.B. StyleLookup oder Width. Die Expander werden dynamisch während der Laufzeit angelegt. Ich fange leider erst gerade mit objectorientierter Programmierung an und bekomme das Ändern der Eigenschaften von diesem Objecten nicht hin. Das Anlegen und anzeigen der Objecte geht das Ändern nicht. Mein Quellcode habe ich angehängt.

Delphi-Quellcode:
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ß;
begin
  StyleLookup := 'expanderstyle';
  Width := 300;
end;


procedure TExpanderNeu.klein(Sender: TObject);
begin
  (Sender as TExpanderNeu).BeginUpdate;
    (Sender as TExpanderNeu).StyleLookup := 'expanderstyleneu';
    (Sender as TExpanderNeu).Width := 125;
  (Sender as TExpanderNeu).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;
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
test : TExpanderNeu;
begin
  if y <> 99 then begin
    i := 1;
    y := 99;
  end;
  if Form1.Width < 300*2.2 then begin
    test.klein(ExpanderArray[1]);
    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;
Angehängte Dateien
Dateityp: pas Haupfenster.pas (7,6 KB, 2x aufgerufen)

Geändert von Torwein ( 8. Dez 2014 um 14:12 Uhr)
  Mit Zitat antworten Zitat