Autor |
Beitrag |
galagher
      
Beiträge: 2556
Erhaltene Danke: 45
Windows 10 Home
Delphi 10.1 Starter, Lazarus 2.0.6
|
Verfasst: Di 04.12.12 18:20
Hallo!
Wieder wende ich mich mit einer Frage an euch:
Wie kann man in einer von einer Komponente erzeugten Prozedur, konkret in OnClick, eine Anmerkung schreiben lassen?
So, wie es bei Delphi vorgesehen ist, wird die Prozedur erstellt, sobald man im OI auf das OnClick-Ereignis klickt - klar. Ich möchte aber in der so erstellten Prozedur einen Anmerkungstext haben, etwa so:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| procedure TForm1.CardPanel1Click(Sender: TObject); begin end;
procedure TForm1.CardPanel1Click(Sender: TObject); begin end; |
Kann man das realisieren? Wenn ja, und das ist die Frage  , wie?
_________________ gedunstig war's - und fahle wornen zerschellten karsig im gestrock. oh graus, es gloomt der jabberwock - und die graisligen gulpen nurmen!
|
|
WasWeißDennIch
      
Beiträge: 653
Erhaltene Danke: 160
|
Verfasst: Di 04.12.12 19:27
Ob das geht, weiß ich ehrlich gesagt nicht. Was ich aber weiß: es würde mich fürchterlich anstinken, wenn eine Fremdkomponente meinen Code mit Kommentaren zumüllt. Bist Du wirklich sicher, dass das notwendig ist?
|
|
galagher 
      
Beiträge: 2556
Erhaltene Danke: 45
Windows 10 Home
Delphi 10.1 Starter, Lazarus 2.0.6
|
Verfasst: Di 04.12.12 19:55
WasWeißDennIch hat folgendes geschrieben : | es würde mich fürchterlich anstinken, wenn eine Fremdkomponente meinen Code mit Kommentaren zumüllt. |
1. Kann man das jedenfslls entfernen, 2. Wenn die Kommentare nützlich sind, dann nicht!
WasWeißDennIch hat folgendes geschrieben : | Bist Du wirklich sicher, dass das notwendig ist? |
Ich meine ja nur auch nur für diese eine Komponente und da nur "Benutze Hint und nicht Caption".
Egel, was der Hintergrund ist: Geht das prinzipiell?
_________________ gedunstig war's - und fahle wornen zerschellten karsig im gestrock. oh graus, es gloomt der jabberwock - und die graisligen gulpen nurmen!
Zuletzt bearbeitet von galagher am Di 04.12.12 20:01, insgesamt 1-mal bearbeitet
|
|
WasWeißDennIch
      
Beiträge: 653
Erhaltene Danke: 160
|
Verfasst: Di 04.12.12 19:59
Und wann ist ein Kommentar, den ich evtl. gar nicht haben will, nützlich? Wenn in der Methode irgendetwas "Komisches" geschieht, dann gehört das entweder in die Doku (readme.txt) oder sollte grundsätzlich noch einmal überdacht werden.
|
|
galagher 
      
Beiträge: 2556
Erhaltene Danke: 45
Windows 10 Home
Delphi 10.1 Starter, Lazarus 2.0.6
|
Verfasst: Di 04.12.12 20:08
WasWeißDennIch hat folgendes geschrieben : | Und wann ist ein Kommentar, den ich evtl. gar nicht haben will, nützlich? |
Naja, das ist ja nun doch ein Argument....
Stopp erstmal hier,
vielleicht kann ich das auch mit einer property lösen!
_________________ gedunstig war's - und fahle wornen zerschellten karsig im gestrock. oh graus, es gloomt der jabberwock - und die graisligen gulpen nurmen!
|
|
jaenicke
      
Beiträge: 19315
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Di 04.12.12 20:54
Worum geht es denn konkret?
Vielleicht um zusätzliche Daten und wo man die herbekommt? Dann übergib die einfach als Parameter an OnClick. 
|
|
Perlsau
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Mi 05.12.12 00:41
jaenicke hat folgendes geschrieben : | Worum geht es denn konkret? |
Ich glaube, es geht um eine Gedächtnisstütze ...
|
|
WasWeißDennIch
      
Beiträge: 653
Erhaltene Danke: 160
|
Verfasst: Mi 05.12.12 10:02
Sofern ich das richtig verstanden habe, hast Du eine Komponente abgeleitet und willst nun verhindern, dass eine bestimmte Property benutzt wird, stimmt das soweit? In dem Fall würde ich zuerst überprüfen, ob das nicht auch so ginge: in der VCL sind viele, wenn nicht gar die meisten, Komponenten von einer TCustomKomponente abgeleitet. In dieser sind die Properties protected deklariert und werden erst in der Ableitung nach public bzw. published verschoben. Wenn man also nicht von TKomponente, sondern von TCustomKomponente ableitet, kann man auf diese Veröffentlichung Einfluss nehmen. Beispiel:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23:
| type TCustomKomponente = class(TComponent) ... protected property Bla: TBla read FBla write FBla; property Blubb: TBlubb read FBlubb write FBlubb; ... end;
TKomponente = class(TCustomKomponente) ... published property Bla; property Blubb; ... end;
TDeineKomponente = class(TCustomKomponente) ... published property Bla; ... end; |
In der eigenen Klasse wird also die Property Blubb nicht veröffentlicht und steht somit von außen nicht zur Verfügung.
|
|
galagher 
      
Beiträge: 2556
Erhaltene Danke: 45
Windows 10 Home
Delphi 10.1 Starter, Lazarus 2.0.6
|
Verfasst: Mi 05.12.12 18:36
_________________ gedunstig war's - und fahle wornen zerschellten karsig im gestrock. oh graus, es gloomt der jabberwock - und die graisligen gulpen nurmen!
|
|
WasWeißDennIch
      
Beiträge: 653
Erhaltene Danke: 160
|
Verfasst: Mi 05.12.12 18:42
Nunja, der Zusammenhang zwischen OnClick, Hint und Caption ist mir zwar verborgen geblieben, aber wenn Du unbedingt einen Hinweis haben möchtest, könntest Du in Deinem Komponenten-Code ja ein
Delphi-Quelltext 1:
| {$MESSAGE HINT 'TDingsbums: Hint statt Caption benutzen'} |
unterbringen.
[edit] Wobei das u.U. auch wieder stört, aber das kann man ggf. auch noch z.B. auf die Debug-Konfiguration eingrenzen. [/edit]
|
|
galagher 
      
Beiträge: 2556
Erhaltene Danke: 45
Windows 10 Home
Delphi 10.1 Starter, Lazarus 2.0.6
|
Verfasst: Mi 05.12.12 21:20
WasWeißDennIch hat folgendes geschrieben : | Nunja, der Zusammenhang zwischen OnClick, Hint und Caption ist mir zwar verborgen geblieben, aber wenn Du unbedingt einen Hinweis haben möchtest, könntest Du in Deinem Komponenten-Code ja ein
Delphi-Quelltext 1:
| {$MESSAGE HINT 'TDingsbums: Hint statt Caption benutzen'} |
unterbringen. |
Ja, das kann ich brauchen! Danke!
Also: Caption kann, muss aber nicht den ungekürzten, vollständigen Pfadnamen einer Datei enthalten. Hint enthält immer den ganzen Pfad. Könnte dazu auch eine StringList verwenden, aber ich brauche das so und nicht anders.
WasWeißDennIch hat folgendes geschrieben : | [edit] Wobei das u.U. auch wieder stört, aber das kann man ggf. auch noch z.B. auf die Debug-Konfiguration eingrenzen. [/edit] |
Mal sehen, ob ich mit Google dazu etwas finde!
_________________ gedunstig war's - und fahle wornen zerschellten karsig im gestrock. oh graus, es gloomt der jabberwock - und die graisligen gulpen nurmen!
|
|
jaenicke
      
Beiträge: 19315
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Mi 05.12.12 21:32
galagher hat folgendes geschrieben : | Also: Caption kann, muss aber nicht den ungekürzten, vollständigen Pfadnamen einer Datei enthalten. Hint enthält immer den ganzen Pfad. |
Das hört sich so an als ob in der Tat eine entsprechende Property viel sinnvoller ist. FullPath oder so.
Denn Caption ist der Titel / Inhalt einer Komponente und Hint der Hinweistext, der als Hint angezeigt wird. Beides hat rein gar nichts mit einer bestimmten Funktion zu tun, egal ob du es so nutzt. Das kennt aber niemand so, weil es standardmäßig eine feste Bedeutung hat. Deshalb macht es Sinn eine property FullPath anzulegen, die beim Schreiben einfach in Hint reinschreibt, wenn das bei dir so sein soll.
So kannst du die Eigenschaften nutzen wie du es meinst, hast aber für einen neuen Benutzer auch eine Eigenschaft, die er über den Namen für den Zweck findet.
|
|
galagher 
      
Beiträge: 2556
Erhaltene Danke: 45
Windows 10 Home
Delphi 10.1 Starter, Lazarus 2.0.6
|
Verfasst: Mi 05.12.12 21:39
jaenicke hat folgendes geschrieben : | So kannst du die Eigenschaften nutzen wie du es meinst, hast aber für einen neuen Benutzer auch eine Eigenschaft, die er über den Namen für den Zweck findet. |
Ja, stimmt natürlich. Jedenfall klappt es hervorragend mit {$MESSAGE HINT}.
Eine property FullPath ist aber besser. Werde es wohl so machen!
_________________ gedunstig war's - und fahle wornen zerschellten karsig im gestrock. oh graus, es gloomt der jabberwock - und die graisligen gulpen nurmen!
|
|
jaenicke
      
Beiträge: 19315
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Do 06.12.12 08:08
galagher hat folgendes geschrieben : | Jedenfall klappt es hervorragend mit {$MESSAGE HINT}. |
Aber nur bei dir, denn ein Benutzer der Komponente wird diese kaum selbst jedesmal kompilieren. Und dann wird er AFAIK auch diese Hinweise nicht sehen, wenn die Unit gar nicht neu kompiliert wird.
|
|
galagher 
      
Beiträge: 2556
Erhaltene Danke: 45
Windows 10 Home
Delphi 10.1 Starter, Lazarus 2.0.6
|
Verfasst: Do 06.12.12 20:09
jaenicke hat folgendes geschrieben : | Aber nur bei dir, denn ein Benutzer der Komponente wird diese kaum selbst jedesmal kompilieren. |
Ja, stimmt allerdings...
Vielleicht verwefe ich das auch alles und mach' etwas anderes, mit einer Variablen, die den Pfad enthält, oder eine StringList für mehrere dieser Komponenten oder ein Array!
_________________ gedunstig war's - und fahle wornen zerschellten karsig im gestrock. oh graus, es gloomt der jabberwock - und die graisligen gulpen nurmen!
|
|
jaenicke
      
Beiträge: 19315
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Fr 07.12.12 00:38
galagher hat folgendes geschrieben : | Vielleicht verwefe ich das auch alles und mach' etwas anderes, mit einer Variablen, die den Pfad enthält, oder eine StringList für mehrere dieser Komponenten oder ein Array! |
Der Pfad gehört zu einer Komponente, deshalb gehört das auch grundsätzlich erst einmal in ein private-Feld, eine Liste oder ein Array würden ja voraussetzen, dass du die Komponenten intern auch als Liste hast usw., das wäre ja kaum sinnvoll. Ob der Wert dann zusätzlich in Hint oder so kommt, ist ja egal, das kann der Setter deiner Eigenschaft FullPath ja machen.
|
|
|