Autor Beitrag
galagher
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2556
Erhaltene Danke: 45

Windows 10 Home
Delphi 10.1 Starter, Lazarus 2.0.6
BeitragVerfasst: 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:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
{Statt wie vorgesehen:}
procedure TForm1.CardPanel1Click(Sender: TObject);
begin
  
end;

{Möchte ich es so:}
procedure TForm1.CardPanel1Click(Sender: TObject);
begin
  //Hier steht die Anmerkung
end;

Kann man das realisieren? Wenn ja, und das ist die Frage :mrgreen: , wie?

_________________
gedunstig war's - und fahle wornen zerschellten karsig im gestrock. oh graus, es gloomt der jabberwock - und die graisligen gulpen nurmen!
WasWeißDennIch
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 653
Erhaltene Danke: 160



BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2556
Erhaltene Danke: 45

Windows 10 Home
Delphi 10.1 Starter, Lazarus 2.0.6
BeitragVerfasst: Di 04.12.12 19:55 
user profile iconWasWeißDennIch hat folgendes geschrieben Zum zitierten Posting springen:
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!

user profile iconWasWeißDennIch hat folgendes geschrieben Zum zitierten Posting springen:
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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 653
Erhaltene Danke: 160



BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2556
Erhaltene Danke: 45

Windows 10 Home
Delphi 10.1 Starter, Lazarus 2.0.6
BeitragVerfasst: Di 04.12.12 20:08 
user profile iconWasWeißDennIch hat folgendes geschrieben Zum zitierten Posting springen:
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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19315
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: 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



BeitragVerfasst: Mi 05.12.12 00:41 
user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
Worum geht es denn konkret?


Ich glaube, es geht um eine Gedächtnisstütze ...
WasWeißDennIch
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 653
Erhaltene Danke: 160



BeitragVerfasst: 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:
ausblenden 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2556
Erhaltene Danke: 45

Windows 10 Home
Delphi 10.1 Starter, Lazarus 2.0.6
BeitragVerfasst: Mi 05.12.12 18:36 
user profile iconPerlsau hat folgendes geschrieben Zum zitierten Posting springen:
Ich glaube, es geht um eine Gedächtnisstütze ...
Genau das! Ein Tipp!

user profile iconWasWeißDennIch hat folgendes geschrieben Zum zitierten Posting springen:
Sofern ich das richtig verstanden habe, hast Du eine Komponente abgeleitet und willst nun verhindern, dass eine bestimmte Property benutzt wird, stimmt das soweit?
Nein, nicht verhindern, Das OnClick ist schon gut. Da soll einfach ein Hinweis stehen, dass man Hint statt Caption nutzen soll. Ich werde das aber jetzt wahrscheinlich anders lösen oder ganz bleiben lassen. Mittlerweile gefällt mir der Gedanke nicht mehr so, dass eine Komponete Kommentare irgendwo hin setzt, da hat user profile iconWasWeißDennIch nicht Unrecht.

_________________
gedunstig war's - und fahle wornen zerschellten karsig im gestrock. oh graus, es gloomt der jabberwock - und die graisligen gulpen nurmen!
WasWeißDennIch
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 653
Erhaltene Danke: 160



BeitragVerfasst: 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
ausblenden 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2556
Erhaltene Danke: 45

Windows 10 Home
Delphi 10.1 Starter, Lazarus 2.0.6
BeitragVerfasst: Mi 05.12.12 21:20 
user profile iconWasWeißDennIch hat folgendes geschrieben Zum zitierten Posting springen:
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
ausblenden 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.

user profile iconWasWeißDennIch hat folgendes geschrieben Zum zitierten Posting springen:
[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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19315
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mi 05.12.12 21:32 
user profile icongalagher hat folgendes geschrieben Zum zitierten Posting springen:
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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2556
Erhaltene Danke: 45

Windows 10 Home
Delphi 10.1 Starter, Lazarus 2.0.6
BeitragVerfasst: Mi 05.12.12 21:39 
user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19315
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Do 06.12.12 08:08 
user profile icongalagher hat folgendes geschrieben Zum zitierten Posting springen:
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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2556
Erhaltene Danke: 45

Windows 10 Home
Delphi 10.1 Starter, Lazarus 2.0.6
BeitragVerfasst: Do 06.12.12 20:09 
user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19315
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Fr 07.12.12 00:38 
user profile icongalagher hat folgendes geschrieben Zum zitierten Posting springen:
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.