| Autor | 
Beitrag | 
Eumel 
Hält's aus hier
 
Beiträge: 13 
 
 
 
 | 
Verfasst: Fr 05.07.02 17:13 
 
Hallo,
 ich möchte einen kleinen Formulareditor schreiben.
 Nun weis ich nicht wie ich ein neues Label auf mein Formular(in meinen Formulareditor) bekomme.
 Das Problem ist das ich mehrere Labels hinzufügen muss.
 Wer kann mir helfen    
Zur Zeit hab ich 2 Variablen wo ich die Kordinaten eintrage und einen Button um das Label einzufügen.
 EM.  
 
 | 
 | 
Tino 
        
   
Beiträge: 9839 
Erhaltene Danke: 45 
 
Windows 8.1 
Delphi XE4 
 | 
Verfasst: Fr 05.07.02 17:31 
 
Versuch es mal so:
 		                                                          Quelltext                                	 															1: 2: 3: 4: 5: 6: 7: 8:
  				 | 									NewLabel := tLabel.Create (Self); With NewLabel Do   Begin     Parent := Self     Left := 10;  // Hier die Variable setzen     Top := 10;   // Hier die Variable setzen     Caption := 'Neues Label';   End;					 				 | 			 		 	   
 
 | 
 | 
Eumel   
Hält's aus hier
 
Beiträge: 13 
 
 
 
 | 
Verfasst: Fr 05.07.02 18:15 
 
Danke, geht wunderbar.   
Wie kann ich die neuen Labels auch noch mit der Maus verschieben?
 Hat jemand schon so was gemacht?
 EM.  
 
 | 
 | 
DBR 
        
 
Beiträge: 46 
 
 
 
 | 
Verfasst: Fr 05.07.02 19:58 
 
im unteren Teil von
 home.pages.at/dbr-so.../delphi/schieben.htm
steht das Prinzip.
 Du musst deinen Labels aber vorher das Event MouseDown zuweisen  
 
 | 
 | 
Eumel   
Hält's aus hier
 
Beiträge: 13 
 
 
 
 | 
Verfasst: Sa 06.07.02 11:02 
 
 Titel: Labels ansprechen ?!
 
Nun hab ich das gröbste eingebaut.
 
    Mein Problem jetzt: wie kann ich jetzt die Eigenschaften der neuen Labels ändern? Bzw. wie spreche ich diese an. 
 Ich verwende ähnlich den Code von Tino oben.
 EM.  
 
 | 
 | 
Tino 
        
   
Beiträge: 9839 
Erhaltene Danke: 45 
 
Windows 8.1 
Delphi XE4 
 | 
Verfasst: Sa 06.07.02 12:05 
 
Die Eigenschaften setzt Du genau so wie ich oben die Properties Parent, Left, Top und Caption gesetzt habe!
 
 Was möchtest Du denn zuweisen?
 
 TINO 
 
 | 
 | 
Eumel   
Hält's aus hier
 
Beiträge: 13 
 
 
 
 | 
Verfasst: Sa 06.07.02 12:13 
 
Sorry hab es ein bissel falsch formuliert ... ich meinte: wie kann ich diese nachträglich ändern?
 
 Angenohmen ich hab mir mehrere Labels erzeugt und möchte diesen jetzt anders Positionieren oder die Schriftart ändern etc. , wie kann ich diese dann ansprechen? 
 
 | 
 | 
DBR 
        
 
Beiträge: 46 
 
 
 
 | 
Verfasst: Sa 06.07.02 12:22 
 
na, wie es Tino eben gesagt hat.
 
 NewLabel.caption:='Das ist der neue Text'; 
 
 | 
 | 
Eumel   
Hält's aus hier
 
Beiträge: 13 
 
 
 
 | 
Verfasst: Sa 06.07.02 12:32 
 
Ja, ist ja richtig, nur ich hab die Labels ja dynamisch hinzugefügt (siehe post 1 und 2) also nicht vorher definiert.
 
 Mein Ziel ist beliebig viele Labels zu erzeugen (was auch schon geht) und diese zu ändern (in allen ihren eigenschaften)
 
 EM. 
 
 | 
 | 
Tino 
        
   
Beiträge: 9839 
Erhaltene Danke: 45 
 
Windows 8.1 
Delphi XE4 
 | 
Verfasst: Sa 06.07.02 12:42 
 
Ich denke das Problem das du hast (eigentlich ist es kein Problem) ist das Du keinen direkten Zugriff mehr auf die Labels hast. Beim Erstellen von Labels zur Entwicklungszeit kannst Du ja direkt per Variable auf das Label zugreifen:
 Label1.Caption := 'Neuer Text';Das Problem ist das natürlich die Variabel Label1 beim dynamischen erstellen nicht existiert (Jedenfalls in Deinem Code). 
 Ich weiß nicht wann Du die Eingenschaften ändern willst? Wenn es z. B. in einem Event ist (z. B. das OnClickEvent) ist dann könntest Du über die Variable Sender auf das Label zugreifen. Z. B. so:
 		                                                          Quelltext                                	 															1: 2: 3: 4: 5:
  				 | 									Procedure tForm1.DoLabelClick (aSender: tObject); Begin   If aSender is tLabel Then     tLabel (aSender).Caption := 'Neuer Text'; End;					 				 | 			 		 	  
Eine weiter Möglichkeit wäre alle Komponenten die Du dynamisch erstellst hast in einem tList-Objekt hinzuzufügen und dann kannst Du halt über alle Objekte zur Laufzeit über dieses tList-Objekt zugreifen!
 Gruß  
 
 | 
 | 
Eumel   
Hält's aus hier
 
Beiträge: 13 
 
 
 
 | 
Verfasst: Sa 06.07.02 12:50 
 
Dank, genau so wollt ich das .
 
 EM. 
 
 | 
 | 
Eumel   
Hält's aus hier
 
Beiträge: 13 
 
 
 
 | 
Verfasst: Sa 06.07.02 18:43 
 
 Titel: Labels wieder löschen ... Programm stürtzt mit Ausnahmefehle
 
Hallo,
 ich hab mal wieder ein Problem.
 Jetzt funktioniert zwar das anlegen und ändern der Labels aber löschen lassen sich diese leider nicht.
 wenn ich folgenden code verwende stürt mein Programm mit einen Ausnahmefehler ab      :
 		                                                          Quelltext                                	 															1: 2: 3:
  				 | 									    if Form1.cbDel.Checked = true then       If MessageDlg('Objekt löschen?', mtConfirmation, [mbYes, mbNo], 0) = mrYes then       tLabel (Sender).Destroy;					 				 | 			 		 	  
EM.  
 
 | 
 | 
Klabautermann 
        
   
Beiträge: 6366 
Erhaltene Danke: 60 
 
Windows 7, Ubuntu 
Delphi 7 Prof. 
 | 
Verfasst: Sa 06.07.02 19:35 
 
Hallo,
 
 niemals Destroy direckt aufrufen. Nehme anstelle dessen Free.
 
 Gruß
 Klabautermann 
 
 | 
 | 
Eumel   
Hält's aus hier
 
Beiträge: 13 
 
 
 
 | 
Verfasst: Sa 06.07.02 19:52 
 
danke. funktioniert zwar aber es kommt sporatisch oft der fehler "zugriffsverletzung bei adresse ..."
 
also ist das auch nicht die lösung.     
 
 | 
 | 
Klabautermann 
        
   
Beiträge: 6366 
Erhaltene Danke: 60 
 
Windows 7, Ubuntu 
Delphi 7 Prof. 
 | 
Verfasst: Sa 06.07.02 23:25 
 
	  | Eumel hat folgendes geschrieben: | 	 		  | danke. funktioniert zwar aber es kommt sporatisch oft der fehler "zugriffsverletzung bei adresse ..." | 	  
Kann es sein, das du versuchst auf das Object zuzugreifen,  nachdem du es freigegeben hast? Ind irgendeinem Ereignis vielleicht?
 Gruß
 Klabautermann  
 
 | 
 | 
Eumel   
Hält's aus hier
 
Beiträge: 13 
 
 
 
 | 
Verfasst: Mo 08.07.02 09:09 
 
	  | Zitat: | 	 		  | Kann es sein, das du versuchst auf das Object zuzugreifen, nachdem du es freigegeben hast? Ind irgendeinem Ereignis vielleicht?  | 	  
Ich verwende die OnClick Anweisung, zum löschen der Labels. Kann es sein das diese Probleme bereitet, wenn das Label terminiert wird?
 Gruß EM.  
 
 | 
 | 
DaSurv 
Hält's aus hier
 
Beiträge: 8 
 
 
 
 | 
Verfasst: Mi 17.07.02 23:14 
 
Dein OnClick-Ereignis zum Löschen sollte eigentlich nicht das Problem sein.
 
 Ich denke, das Klabautermann gemeint hat, dass du in irgendeiner anderen Prozedur ein schon gelöschtes Label nochmals ansprichts.
 Zum Beispiel in einer Prozedur, in der du alle selbst erstellten Labels verschiebst oder löscht.
 
 DaSurv 
 
 | 
 | 
SpeedyGTD 
        
 
Beiträge: 89 
 
 
 
 | 
Verfasst: Do 25.07.02 01:26 
 
 Titel: Code
 
Hallo ich hab jetzt eine wahrscheinlich ziemlich dumme Frage dazu, aber wie kann ich den zur Laufzeit neu erzeugten Labels jetzt Code hinzufügen?
 Ich konnte dies aus den bisherigen Antworten nicht erkennen    
MFG SpeedyGTD  
 
 | 
 | 
Alfons-G 
        
 
Beiträge: 307 
 
Win XP Prof, Linux, Win 7 
D5 Prof, D7 Architect, D2005 Architect, D2007 Architect 
 | 
Verfasst: Do 25.07.02 07:59 
 
Du musst vorher die onClick-Prozedur erstellen. Dann kannst Du sie zuweisen: 		                                                          Quelltext                                	 															1: 2: 3: 4: 5: 6: 7:
  				 | 									procedure MeinFormular.MeinKlick (Sender: TObject); begin   ... end; ... MeineKomponente.onClick := MeinKlick; ...					 				 | 			 		 	  Die Prozedur deklarierst Du im private-Teil Deines Formulars.
    
_________________ Alfons Grünewald
  
 | 
 |