hört sich ein wenig einfach an aber da gibt es einen kleinen hacken
ich bin an einem bildbearbeitungsprogramm dran und möchte darauf Textfelder erstellen gesagt getan kein Problem meine vorgehensweise war, dass ich ein memo erstellte darauf ein text schreibe und dann ein Label mit dem namen Label1,label2,label3... usw jenachdem wie viele ich erstellt habe jetz würde ich nur gerne ein on click event erstellen dass, wenn ich auf das label clicke soll es in ein memo feld wieder umgewandelt werden damit ich wieder ein text einfügen kann oder sogar es ggf bewegen
danke im voraus
Zuletzt geändert von Dragomir am Mi 6. Mai 2015, 16:24, insgesamt 1-mal geändert.
Wähle im Objektinspektor das Ereigniss OnClick des entsprechenden Labels und wähle einen Eventhandler oder nutze den automatischen Vervollständiger (Button ...). Du kannst aber auch ein Control nehmen, was für das "Klicken" gedacht ist, z.B. ein TButton
Danke nur ist mein Problem dass das label in der Laufzeit erstellt wird und ich dann ja kein on click event so im objektinspektor hinzufügen kann
oder habe ich dich nur falsch verstanden
procedure TForm1.MyLabelClick(Sender: TObject);
begin
With (Sender as TLabel) do
begin
Memo1.Left:=Left;
Memo1.Top:=Top;
Memo1.Text:=Caption;
Visible:=False;
Memo1.Visible:=True;
Memo1.Tag:=Sender;
end;
end;
procedure TForm1.CreateLable();
begin
...
MyLabel.OnClick:=@MyLabelClick;
end;
procedure TForm1.MemoDoneEditing; //Wenn das Label wieder gezeigt wird
begin
With (Memo1.Sender as TLabel) do
begin
Caption:=Memo1.Caption
Visible:=True;
Memo1.Visible:=False;
end;
end;
Versteh ich das richtig? Du hast mehrere Labels, und die sollen beim Anklicken editierbar werden? Warum nimmst du dann nicht gleich mehrere Memos? Den Rahmen kriegst du mit "Memo1.Border := bsNone" und die Farbe mit "Memo1.ParentColor := true" weg.
ja jenachdem was der user eingeben will sind es vlt mehr zeilen
@wp_xyz
ja das ist auch ne möglichkeit ich probier es mal aus
@Warf
ehm ich hab da ein Problem der Memo.Tag := sender; nimmt er nicht er sagt dann er akzeptiert nur Longint und kein tobject und ohne den sender schmiert mir dsa Programm ab beim labelclick
PtrInt ist sowas wie "Integer", nur genauso groß wie ein TObject, also ein Pointer. Das spielt eine Rolle, wenn du 64-Bit Programme schreibst. Falls du das definitiv ausschließen kannst, ginge auch (würde ich aber nicht empfehlen)