Dynamisches Kreieren von Komponenten

Für allgemeine Fragen zur Programmierung, welche nicht! direkt mit Lazarus zu tun haben.
Antworten
slai
Beiträge: 211
Registriert: Fr 27. Apr 2007, 17:36
Wohnort: Zürich
Kontaktdaten:

Dynamisches Kreieren von Komponenten

Beitrag von slai »

Hallo zusammen

habe heute mal auf Lazarus 0.9.25 fpc 2.2.0 updated. Ok beim kompilieren funktioniert alles
wunderbar.

Dann starte ich das programm und dynamisch kreierte Komponenten sprich TDBEdit und TCombobox werden nicht angezeigt, aber nur teilweise, was mache ich da falsch, siehe printscreen.

also die DBEdit die angezeigt wird erzeuge ich folgendermassen in einer schlaufe:

Code: Alles auswählen

SetLength(DBEdit,length(DBEdit)+1);
DBEdit[length(DBEdit)-1] := TDBEdit.Create(nil);
DBEdit[length(DBEdit)-1].Parent := table2panels[length(table2panels)-1];
DBEdit[length(DBEdit)-1].Left := 120;
DBEdit[length(DBEdit)-1].Width := 70;
DBEdit[length(DBEdit)-1].Top := 2;
DBEdit[length(DBEdit)-1].DataSource := dsFeldSpeichern[length(dsFeldSpeichern)-1];
DBEdit[length(DBEdit)-1].DataField := DBDataMod.ZQAbfragen.FieldByName('SFREMDFELDANZEIGEN').AsString;
DBEdit[length(DBEdit)-1].Tag := length(InfoLabels)-1;
Die DBEdit die nicht angezeigt wird kreiere ich in einer anderen unit folgendermassen:

Code: Alles auswählen

SetLength(EditEditDBData,length(EditEditDBData)+1);
EditEditDBData[Length(EditEditDBData)-1] := TDBEdit.Create(EditPanels[length(EditPanels)-1]);
EditEditDBData[length(EditEditDBData)-1].Parent := EditPanels[length(EditPanels)-1];
EditEditDBData[Length(EditEditDBData)-1].DataSource := getDataSource(STableName);
EditEditDBData[Length(EditEditDBData)-1].DataField := SLFeldliste[i];
EditEditDBData[Length(EditEditDBData)-1].Font.Size := iSchriftgroesse;
EditEditDBData[Length(EditEditDBData)-1].Top := round((EditPanels[length(EditPanels)-1].Height/2)-(EditEditDBData[length(EditEditDBData)-1].Height/2));;
EditEditDBData[Length(EditEditDBData)-1].Left := 200;
EditEditDBData[Length(EditEditDBData)-1].Width := EditPanels[length(EditPanels)-1].Width-EditEditDBData[Length(EditEditDBData)-1].Left-40;
EditEditDBData[Length(EditEditDBData)-1].Visible := True;
und die TCombobox so (wird auch nicht angezeigt):

Code: Alles auswählen

setlength(EditComboBoxen,Length(EditComboBoxen)+1);
EditComboBoxen[length(EditComboBoxen)-1] := TComboBox.Create(EditPanels[length(EditPanels)-1]);
EditComboBoxen[length(EditComboBoxen)-1].Parent := EditPanels[length(EditPanels)-1];
EditComboBoxen[length(EditComboBoxen)-1].Font.Size := iSchriftgroesse;
EditComboBoxen[length(EditComboBoxen)-1].Left := 200;
EditComboBoxen[length(EditComboBoxen)-1].Top := round((EditPanels[length(EditPanels)-1].Height/2)-(EditComboBoxen[length(EditComboBoxen)-1].Height/2));
EditComboBoxen[length(EditComboBoxen)-1].Width := EditPanels[length(EditPanels)-1].Width-EditComboBoxen[length(EditComboBoxen)-1].Left-40;
EditComboBoxen[length(EditComboBoxen)-1].Style := csDropDownList;
EditComboBoxen[length(EditComboBoxen)-1].Name := SLFeldliste[i];
EditComboBoxen[length(EditComboBoxen)-1].OnChange := @ComboBoxChange;
weis da jemand rat, danke schon vielmals im voraus für antworten.
Dateianhänge
printscreen zu gestelltem problem
printscreen zu gestelltem problem
Windows 7, Lazarus 0.9.28.2 fpc 2.2.4, Firebird 2.1, Zeoslib 6.6.6-stable

monta
Lazarusforum e. V.
Beiträge: 2809
Registriert: Sa 9. Sep 2006, 18:05
OS, Lazarus, FPC: Linux (L trunk FPC trunk)
CPU-Target: 64Bit
Wohnort: Dresden
Kontaktdaten:

Beitrag von monta »

Wenn du das in ner anderen Unit erstellst, bist du sicher, ob die Owner-Geschichte dann stimmt, bzw. übergibst du irgendwo noch dein Zielformular?
Johannes

slai
Beiträge: 211
Registriert: Fr 27. Apr 2007, 17:36
Wohnort: Zürich
Kontaktdaten:

Beitrag von slai »

hey monta

Ja der Owner stimmt 100% in der Lazarus version 0.9.22 mit fpc 2.0.1 funktioniert alles mit diesem selben code. Die dbgrids die angezeigt werden, sind in einer verschachtelten form.
Und den DBCheckboxen übergebe ich ja auch denselben owner, die werden aber angezeigt auf dem panel.


gruss
Windows 7, Lazarus 0.9.28.2 fpc 2.2.4, Firebird 2.1, Zeoslib 6.6.6-stable

slai
Beiträge: 211
Registriert: Fr 27. Apr 2007, 17:36
Wohnort: Zürich
Kontaktdaten:

Beitrag von slai »

habs gefunden, beim einstellen von width hats mir irgendwie den left verschoben und somit wurde die komponente irgendwo hin verschoben, jetzt setze ich einfach zuerst den width und dann den left, zusätzlich noch autosize auf false und es funktioniert :-)
Windows 7, Lazarus 0.9.28.2 fpc 2.2.4, Firebird 2.1, Zeoslib 6.6.6-stable

Antworten