Oder man könnte sicherlich auch zur Laufzeit ein TEdit erstellen und den Text aus der Caption des Labels erstellen.
Delphi-Quellcode:
procedure TForm1.Bearbeiten;
var
ed: TEdit;
begin
ed:=TEdit.create(self);
with ed do
parent:=Form1; //kann natürlich auch ein Panel oder sonstwas sein.
text:=label1.caption; //holen wir uns mal den Text
ed.top:=label1.top;
ed.left:=label1.left; //Position und Länge des TEdit festlegen
ed.width:=150;
OnExit:=schreibelabel; //Eine Ereignisprozedure wäre auch nicht schlecht ;-)
tag:=label1.tag; //So können wir vielleicht user Label wiederfinden
bringtofront; //Es soll natürlich über dem Label liegen
selectall; //Bei bedarf den gesamten Inhalt markieren
setfocus; //Und natürlich auch den aktuellen Focus geben
end;
end;
procedure TForm1.schreibelabel(Sender: TObject);
var
i: Integer;
begin
for i:=0 to components.count-1 do //Einfach mal alle Komponente abgrasen
if components[i] is TLabel then //und wenn's ein TLabel ist
if (components[i] as TLabel).Tag=(Sender as TEdit).Tag then begin
//Und wir über TAG unser Label finden
(components[i] as TLabel).Caption:=ed.text; //Den neuen Wert zurückschreiben
ed.free; //und das TEdit wieder freigeben
end;
end;
Das hab ich jetzt mal aus dem Kopf zusammengeschrieben.
Könnte funktionieren. Einfach mal ausprobieren. Aber so würde ich es machen, weil es mir viel zu viel arbeite wäre, ständig irgendwelche Edits mit anderem Border und anderer Farbe zu versehen.
Und wenn man sich darüber noch ein bischen Gedanken macht, dann kann man (zumindest für sich als Programmierer) noch mehr Arbeit sparen, für den Fall, das die Label's auf der Form, die auf diese Weise bearbeitet werden sollen, noch nicht feststehen und im Laufe der zeit welche dazu kommen.
Hoffe das hilft dir weiter
Und, sollten noch fehler drin sein, bitte um Nachsicht...das hab ich mir grad aus meinem kleinen Kopf gequetscht