Franz Glaser
2017-12-17 17:38:49 UTC
Vielen Dank für eure Hilfe im Frühjahr.
Das ist die Prozedur zum Eintrag "vieler" Scheibchen auf der
Landkarte mit einem Hint, sobald die Maus auf die Fläche der
kleinen Scheibe kommt.
-------------------------------------------------------------
procedure TForm01.MakeHint(X,Y,r : Integer;DiskCol:TColor;
HintString : ShortString);
var Sh: TShape;
begin
//
// Shape erzeugen und in Liste eintragen
//
Sh := TShape.Create(self);
Sh.Parent := Panel1 ; // auf (Form1) Panel1 zeichnen
Sh.Left := X-r; // berechnete Koordninaten
Sh.Top := Y-r; // "
Sh.Tag := SHList.Count; // damit wird das Shape identifiziert
Sh.Shape := stCircle;
Sh.Hint := HintString;
Sh.ShowHint := true ;
Sh.Cursor := crArrow ;
Sh.Height := 2*r;
Sh.Width := 2*r;
Sh.Brush.Color := DiskCol;
Sh.OnClick := ??? <---<<<
ShList.Add(Sh); // ab in die Liste!
LpfCount.caption := inttostr(ShList.Count); {Anzeige}
end;
-----------------------------------------------------------------
Jetzt möchte ich aber mehr als den Hint haben und dafür
brauche ich ein Ereignis, das eine Tätigkeit abwickelt,
sobald die Maus auf dem Feld ist UND KLICK gedrückt
wird oder - noch besser, UND eine Funktionstaste.
(Es hängt damit zusammen, dass der gleiche Eintrag mehrfach
vorkommen kann mit der selben Adresse und dem selben call
aber mit verschiedenen Dezibel zu verschiedenen Uhreiten.
Davon möchte ich eine Liste erstellen)
Dazu müsste ich ein _Ereignis_ eintragen wie bei den Tast-
flächen, Listboxen usw. üblich bei Mausklick und bei
Funktionstaste. Das Hintergrundbild hinter den kleinen
Scheiben ist außer Betrieb für alle seine Ereignisse, sobald
die Maus in einem der Scheibchen ist.
TShape hat zwar Onklick usw. aber ich krieg die nicht gekoppelt
mit einer Prozedur. Error: incompatible types: got "untyped"
expected "<procedure variable type of procedure(TObject) of
object; Register>"
Die andere Fehlermeldung ist, dass TShape keine class ist.
Ich habe schon viel probiert, auch eine lokale Prozedur
auf Makehint geht nicht :-)
MfG Glaser,
73 de Franz, OE5FGL
Das ist die Prozedur zum Eintrag "vieler" Scheibchen auf der
Landkarte mit einem Hint, sobald die Maus auf die Fläche der
kleinen Scheibe kommt.
-------------------------------------------------------------
procedure TForm01.MakeHint(X,Y,r : Integer;DiskCol:TColor;
HintString : ShortString);
var Sh: TShape;
begin
//
// Shape erzeugen und in Liste eintragen
//
Sh := TShape.Create(self);
Sh.Parent := Panel1 ; // auf (Form1) Panel1 zeichnen
Sh.Left := X-r; // berechnete Koordninaten
Sh.Top := Y-r; // "
Sh.Tag := SHList.Count; // damit wird das Shape identifiziert
Sh.Shape := stCircle;
Sh.Hint := HintString;
Sh.ShowHint := true ;
Sh.Cursor := crArrow ;
Sh.Height := 2*r;
Sh.Width := 2*r;
Sh.Brush.Color := DiskCol;
Sh.OnClick := ??? <---<<<
ShList.Add(Sh); // ab in die Liste!
LpfCount.caption := inttostr(ShList.Count); {Anzeige}
end;
-----------------------------------------------------------------
Jetzt möchte ich aber mehr als den Hint haben und dafür
brauche ich ein Ereignis, das eine Tätigkeit abwickelt,
sobald die Maus auf dem Feld ist UND KLICK gedrückt
wird oder - noch besser, UND eine Funktionstaste.
(Es hängt damit zusammen, dass der gleiche Eintrag mehrfach
vorkommen kann mit der selben Adresse und dem selben call
aber mit verschiedenen Dezibel zu verschiedenen Uhreiten.
Davon möchte ich eine Liste erstellen)
Dazu müsste ich ein _Ereignis_ eintragen wie bei den Tast-
flächen, Listboxen usw. üblich bei Mausklick und bei
Funktionstaste. Das Hintergrundbild hinter den kleinen
Scheiben ist außer Betrieb für alle seine Ereignisse, sobald
die Maus in einem der Scheibchen ist.
TShape hat zwar Onklick usw. aber ich krieg die nicht gekoppelt
mit einer Prozedur. Error: incompatible types: got "untyped"
expected "<procedure variable type of procedure(TObject) of
object; Register>"
Die andere Fehlermeldung ist, dass TShape keine class ist.
Ich habe schon viel probiert, auch eine lokale Prozedur
auf Makehint geht nicht :-)
MfG Glaser,
73 de Franz, OE5FGL