Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi TLabel in TEdit "konvertieren"? (https://www.delphipraxis.net/57448-tlabel-tedit-konvertieren.html)

Angel4585 21. Nov 2005 14:56


TLabel in TEdit "konvertieren"?
 
Hallo zusammen.

Ich mach gerade eine kleine Benutzerverwaltung, in der ich die Daten(Vorname,Nachname usw.) in Labels anzeigen lasse.

Wenn ich jetzt auf "Neuer Benutzer" oder "Benutzer bearbeiten" klicke, muss ich jetzt die Daten eingeben, da das bei Labels nich so toll funzt, brauch ich also TEdits. Ich könnt jetzt ganz einfach hingehen und Edits auf die Form setzen und mit Visible rumspielen, allerdings ging mir gerade die Frage duch den Kopf, ob man nicht eine Komponente von TLabel in TEdit "konvertieren" kann.

Weis jemand ob/wie das geht?

Mfg Angel4585 :angel:

Zacherl 21. Nov 2005 14:58

Re: TLabel in TEdit "konvertieren"?
 
Zum Anzeigen von Texten, die niht bearbeitet werden sollen einfach ReadOnly des Edits auf true stellen.

Florian

dahead 21. Nov 2005 15:01

Re: TLabel in TEdit "konvertieren"?
 
also das problem verstehe ich jetzt nicht ganz.

edits sind zum bearbeiten, labels zum anzeigen.
wenn du nicht willst, dass man im edit was ändert, würde ich es auf readonly = true setzen.
da du die daten ja irgendwo hinterlegst, kannst du ja auch ein Edit1.Text := Label1.Caption verwenden.

Oder versteh ich da was falsch?

edit: leicht zu spät, kein kasten.

Angel4585 21. Nov 2005 15:12

Re: TLabel in TEdit "konvertieren"?
 
Sorry, vielleicht war die Fragestellung falsch. Ich möcht keine Lösung für mein spezielles Problem, ich möcht ja nur wissen ob das theoretisch geht.

dahead 21. Nov 2005 15:13

Re: TLabel in TEdit "konvertieren"?
 
wozu?

und zur frage: per befehl sicherlich nicht. du könntest dir einen zwitter basteln, aber da kommen wir wieder zu "wozu?".

noidic 21. Nov 2005 15:23

Re: TLabel in TEdit "konvertieren"?
 
Mit den Einstellungen von Bevels, Border und Color vom TEdit kannst dus aussehen lassen wie ein Label. Im Edit-Mode dann die Einstellung wieder auf die Standardwerte setzen. Aber ob das so dolles GUI-Design ist...

Angel4585 22. Nov 2005 07:08

Re: TLabel in TEdit "konvertieren"?
 
Naja is eigentlich au egal. Habs jetzt mit Edits gemacht.
Danke trotzdem.

ManuMF 22. Nov 2005 07:23

Re: TLabel in TEdit "konvertieren"?
 
Beim Edit BorderStyle auf bsNone setzen und Color auf ClBtnFace => dann sieht es aus wie ein Label.

Gruß,
ManuMF

Captnemo 22. Nov 2005 09:03

Re: TLabel in TEdit "konvertieren"?
 
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. :roll: 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 :mrgreen:

Angel4585 22. Nov 2005 09:56

Re: TLabel in TEdit "konvertieren"?
 
@ CaptNemmo: danke für die Mühe, aber das ist mir dann doch bissl zu umständlich.
@ ManuMF: Wenn ich den Borderstyle auf bsnone setze verschiebt sich aber der Text etwas nch oben, was ziemlich besch... aussieht. Kann man das irgendwie beheben?

Jelly 22. Nov 2005 10:06

Re: TLabel in TEdit "konvertieren"?
 
Zitat:

Zitat von Angel4585
...ob man nicht eine Komponente von TLabel in TEdit "konvertieren" kann.

:wall: Du wirst aus ner Pflaume auch niemals Apfelsaft auspressen können.

Was geht, ist das optische Erscheinungsbild des Edits anzupassen dass es einem Label gleicht. Aber das wurd ja schon vorgeschlagen.

Captnemo 22. Nov 2005 10:06

Re: TLabel in TEdit "konvertieren"?
 
Zitat:

Zitat von Angel4585
@ CaptNemmo: danke für die Mühe, aber das ist mir dann doch bissl zu umständlich.

Das ist relativ. Ich kenn ja dein Projekt nicht. Aber wenn du noch zu beginn an der Visuellen Form rumbastelst, wäre es ja sinnvoll für dich, dir Funktionen zu schreiben, welche dir die Hauptarbeit abnehmen, und so universell sind, dass sie auf eine Erweiterung der Form automatisch reagieren. Aber das sit ja Ansichtssache ;-)

Zitat:

Zitat von Angel4585
@ ManuMF: Wenn ich den Borderstyle auf bsnone setze verschiebt sich aber der Text etwas nch oben, was ziemlich besch... aussieht. Kann man das irgendwie beheben?

Schiebdoch einfach das Editfeld über die Eigenschaften Left und Top beim ändern von Borderstyle um 2 (oder 1) Punkte nach links und nach oben. Wenn du dann Borderstyle wieder zurück änderst, schiebst du es wieder nach recht bzw. nach unten. Anderst wirst du das mit dieser Lösung wohl nicht erreichen.

Angel4585 22. Nov 2005 10:35

Re: TLabel in TEdit "konvertieren"?
 
Zitat:

Schiebdoch einfach das Editfeld über die Eigenschaften Left und Top beim ändern von Borderstyle um 2 (oder 1) Punkte nach links und nach oben. Wenn du dann Borderstyle wieder zurück änderst, schiebst du es wieder nach recht bzw. nach unten. Anderst wirst du das mit dieser Lösung wohl nicht erreichen.
Jo ist mir gerade aufgefallen.

Ich mach das ganze sowiese in ner Schleife, ich muss dort ja nur Top:=Top+2, bzw. Top:=Top-2 reinschreiben. :wall:


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:11 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz