Registriert seit: 6. Dez 2011
11 Beiträge
|
Objecteigenschaften während der Laufzeit ändern
8. Dez 2014, 14: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;
Geändert von Torwein ( 8. Dez 2014 um 15:12 Uhr)
|
|
Zitat
|