Hallo,
ich erstelle einige TDBEdit Felder erst dynamisch zur Laufzeit. Wenn ich dann einen Datensatz aufrufe wird der Inhalt in dem TDBEdit erst angezeigt, wenn ich auf das Editfeld klicke bzw. wenn das TDBEdit Feld den Focus erhält woaran kann das liegen? Ich nutze folgenden Quellcode zum Erzeugen der TDBEdit Felder:
<PRE>
procedure feld_erstellen(sField:String;p_left:integer;p_top: integer;MaskSource:TDataSource);
var l_width:integer;
begin
if table_temp.FieldbyName(sField).DataType <> ftBoolean then begin
//Label erzeugen
dyn_label:= TLabel.Create(parent_compo);
with dyn_label do
begin
Parent:= parent_compo;
{ Instanzenname generieren }
Name:= 'label_' + sField;
{ Beschriftung = Feldname }
Caption:= sField+':';
{ Schriftart für die Feldnamenanzeige }
//Font.Name:= 'Arial';
{ Abstand vom linken Fensterrand }
Left:= p_left;
{ Abstand vom Clientbereich }
Top:= p_top+v_diff;
end;
end;
//Editfeld erzeugen
if (table_temp.FieldbyName(sField).DataType = ftString) OR (table_temp.FieldbyName(sField).DataType = ftFloat) then begin
dyn_edit:= TDBEdit.Create(parent_compo);
with dyn_edit do
begin
Parent:= parent_compo;
{ mit dem Feld in der Datenbanktabelle verknüpfen }
DataField:= sField;
{ TDataSource der Form zuweisen }
DataSource:= MaskSource;
{ Font für die TDBEdit-Controls definieren }
//Font.Name:= 'Courier New';
{ Abstand vom linken Fensterrand }
Left:= p_left+max_width+h_space;
Name:= 'DBedit_' + sField;
Text:= '';
width:=150;
//maxlength:=0;
{ vertikaler Abstand vom Clientbereich }
Top:= p_top;
Visible:= True;
end;
end;
//DBCheckBox erzeugen
if table_temp.FieldbyName(sField).DataType = ftBoolean then begin
dyn_checkbox:= TDBCheckBox.Create(parent_compo);
with dyn_checkbox do
begin
Parent:= parent_compo;
{ mit dem Feld in der Datenbanktabelle verknüpfen }
DataField:= sField;
{ TDataSource der Form zuweisen }
DataSource:= MaskSource;
{ Font für die TDBEdit-Controls definieren }
//Font.Name:= 'Courier New';
{ Abstand vom linken Fensterrand }
Left:= p_left;
Name:= 'DBedit_' + sField;
Caption:= sField;
{ vertikaler Abstand vom Clientbereich }
Top:= p_top;
Visible:= True;
end;
end;
//DBDateEdit erzeugen
if table_temp.FieldbyName(sField).DataType = ftDate then begin
dyn_dateedit:= TDBDateEdit.Create(parent_compo);
with dyn_dateedit do
begin
Parent:= parent_compo;
{ mit dem Feld in der Datenbanktabelle verknüpfen }
DataField:= sField;
{ TDataSource der Form zuweisen }
DataSource:= MaskSource;
{ Font für die TDBEdit-Controls definieren }
//Font.Name:= 'Courier New';
{ Abstand vom linken Fensterrand }
Left:= p_left+max_width+h_space;
Name:= 'DBedit_' + sField;
//Caption:= '';//sField;
Text:= '';
{ vertikaler Abstand vom Clientbereich }
Top:= p_top;
Visible:= True;
end;
end;
end;
</PRE>
Vielen Dank und Grüße
Hendrik
ich erstelle einige TDBEdit Felder erst dynamisch zur Laufzeit. Wenn ich dann einen Datensatz aufrufe wird der Inhalt in dem TDBEdit erst angezeigt, wenn ich auf das Editfeld klicke bzw. wenn das TDBEdit Feld den Focus erhält woaran kann das liegen? Ich nutze folgenden Quellcode zum Erzeugen der TDBEdit Felder:
<PRE>
procedure feld_erstellen(sField:String;p_left:integer;p_top: integer;MaskSource:TDataSource);
var l_width:integer;
begin
if table_temp.FieldbyName(sField).DataType <> ftBoolean then begin
//Label erzeugen
dyn_label:= TLabel.Create(parent_compo);
with dyn_label do
begin
Parent:= parent_compo;
{ Instanzenname generieren }
Name:= 'label_' + sField;
{ Beschriftung = Feldname }
Caption:= sField+':';
{ Schriftart für die Feldnamenanzeige }
//Font.Name:= 'Arial';
{ Abstand vom linken Fensterrand }
Left:= p_left;
{ Abstand vom Clientbereich }
Top:= p_top+v_diff;
end;
end;
//Editfeld erzeugen
if (table_temp.FieldbyName(sField).DataType = ftString) OR (table_temp.FieldbyName(sField).DataType = ftFloat) then begin
dyn_edit:= TDBEdit.Create(parent_compo);
with dyn_edit do
begin
Parent:= parent_compo;
{ mit dem Feld in der Datenbanktabelle verknüpfen }
DataField:= sField;
{ TDataSource der Form zuweisen }
DataSource:= MaskSource;
{ Font für die TDBEdit-Controls definieren }
//Font.Name:= 'Courier New';
{ Abstand vom linken Fensterrand }
Left:= p_left+max_width+h_space;
Name:= 'DBedit_' + sField;
Text:= '';
width:=150;
//maxlength:=0;
{ vertikaler Abstand vom Clientbereich }
Top:= p_top;
Visible:= True;
end;
end;
//DBCheckBox erzeugen
if table_temp.FieldbyName(sField).DataType = ftBoolean then begin
dyn_checkbox:= TDBCheckBox.Create(parent_compo);
with dyn_checkbox do
begin
Parent:= parent_compo;
{ mit dem Feld in der Datenbanktabelle verknüpfen }
DataField:= sField;
{ TDataSource der Form zuweisen }
DataSource:= MaskSource;
{ Font für die TDBEdit-Controls definieren }
//Font.Name:= 'Courier New';
{ Abstand vom linken Fensterrand }
Left:= p_left;
Name:= 'DBedit_' + sField;
Caption:= sField;
{ vertikaler Abstand vom Clientbereich }
Top:= p_top;
Visible:= True;
end;
end;
//DBDateEdit erzeugen
if table_temp.FieldbyName(sField).DataType = ftDate then begin
dyn_dateedit:= TDBDateEdit.Create(parent_compo);
with dyn_dateedit do
begin
Parent:= parent_compo;
{ mit dem Feld in der Datenbanktabelle verknüpfen }
DataField:= sField;
{ TDataSource der Form zuweisen }
DataSource:= MaskSource;
{ Font für die TDBEdit-Controls definieren }
//Font.Name:= 'Courier New';
{ Abstand vom linken Fensterrand }
Left:= p_left+max_width+h_space;
Name:= 'DBedit_' + sField;
//Caption:= '';//sField;
Text:= '';
{ vertikaler Abstand vom Clientbereich }
Top:= p_top;
Visible:= True;
end;
end;
end;
</PRE>
Vielen Dank und Grüße
Hendrik
Comment