![]() |
Re: Label unter Mausposition
@ Hagen:
Du hast dich nur leicht verrannt wenn du mich fragst. FindDragTarget ist nämlich imho gar nicht nötig da du doch als Parameter den Sender bekommst! Außerdem würde ich die Funktion schon rein vom Namen her in die Sparte Drag & Drop einsortieren. Außerdem versuchst du das gefundene Element in eine Variable vom Typ TControl zu zwengen... Nach meiner Meinung (korregiert mich wenn ich falsch liege) kann das gar nicht gehen, denn Falls du ein Label übergeben bekommst ist es eben vom Typ TLabel und da hilfts auch nicht wenn es von einem TControl abstammt. P.S.: Ich schließ mich voll und ganz Marabu an: Ich denke wir wollen/sollen helfen die beste Lösung für ein Problem zu finden. |
Re: Label unter Mausposition
Zitat:
Unintelligent ist es von vornherein, ohne die Lösungsvorschläge der anderen zu diskretitieren geschweige denn sie zu verstehen ein Flamwar vom Zaun zu brechen. Faux, wurde in keinsterweise abgewascht, nicht von mir und auch nicht von Sharky. @Faux: Zitat:
Ich habe klipp und klar gesagt das es zum besseren Verständnisses des Fragestellers es besser ist deinen offensichtlichen und allgemein sinnvollen Vorschlag zu befolgen. Dies tat ich nur aus einem Grunde: dein Vorschlag ist wensentlich einfacher umzusetzen und schneller für einen Anfänger zu begreifen. Deinen Vorschlag ansich halte ich aus meiner Erfahrung aber für viel weniger Supportfreundlich, besonders wenn die Aufgabenstellung es verlangt das ALLE TLabels eines TForms angesprochen werden sollen. Dies beinhaltet auch die TLabels die erst viel später durch zb. einen anderen Programierer auf das TForm platziert werden. In diesem Moment bezahlt sich mein Vorschlag, denn man muß keinerlei Events mehr setzen, geschweige denn darüber überhaupt nachdenken ob man was setzen muß ! Egal: es nervt mich das man in letzter Zeit für eine gutgemeinte Hilfe immer wieder angezählt wird, statt sie einfach als sinnvollen Hinweis zu akzeptieren. Nochwas: was hat .NET mit der Sache zu tuen ?? Gruß Hagen |
Re: Label unter Mausposition
@M_Gr:
Zitat:
Sie heist einfach nunmal so, sie zu ignorieren um ein Problem zu lösen nur weil sie SO heist ist doch noch dümmer. Bitte schau dir die Objekthierarchie der VCL genauer an und überlege mal wer die Mutter aller Controls IST ! Gruß Hagen |
Re: Label unter Mausposition
Zitat:
Zitat:
@Lilo: Und hast du das Problem gelöst? |
Re: Label unter Mausposition
HiHo,
Ich wollte mir gar nicht groß in die Diskussion von euch einmischen, sondern nur zum Besten geben, dass ich die Lösungsvariante von Hagen supergut in einem Projekt von mir verwenden kann! Ich muss zwar noch daran rumdocktor'n, aber mit dynamisch erstellten Labels hat der Code echt was für sich! viele Grüße, hanselmansel P.S.: Und bzgl. der Komplexität des Codes: Man kann nun wirklich nicht behaupten, dass ich kein Newbie wäre! |
Re: Label unter Mausposition
hagens idee ist vom prinzip er genau das was ich brauche ^^
das problem, mal ein kleines bsp.:,
Delphi-Quellcode:
ich müsste dann ja bei allen 30 labeln mouseenter mouseleave jeweils 1 procedure machen... wenn ich aber den name bekommen kann wenn ich mit der maus über dem label in kann ich mir das alles sparen... und hab im endeffekt nur 3 proceduren ^^ kann sein das man sowas ganz elegant lösen kann aber diese lösung habe ich nicht gefunden deswegen mein weg hier her :) ^^
procedure TForm1.MausEnter(lbl:tlabel);
begin lbl.Font.Color:=clRed; end; procedure TForm1.MausLeave(lbl:tlabel); begin lbl.Font.Color:=clBlack; end; procedure TForm1.Label1MouseEnter(Sender: TObject); begin MausEnter(label1); end; procedure TForm1.Label1MouseLeave(Sender: TObject); begin MausLeave(label1); end; procedure TForm1.Label2MouseEnter(Sender: TObject); begin MausEnter(label2); end; |
Re: Label unter Mausposition
Hast du es nun geschafft, oder war dein letzer post ein "Bitte Helft mir" Post? :gruebel:
|
Re: Label unter Mausposition
Hi Lilo,
Zitat:
Ich nenne das jetzt mal eine wohldurchdachte Entscheidung, die auch Hagen versöhnen sollte... marabu |
Re: Label unter Mausposition
Passt zwar net ganz hier rein, aber einen neuen Thread braucht ma auch net:
Kann mir wer eine .NET kompatible Lösung zu Hangens Lösung geben/sagen/zu ihr verhelfen? Denn das ist manchmal sicherlich nützlich... ;) Danke schon mal. |
Re: Label unter Mausposition
Zitat:
1.) du hast 30 labels auf deinem TForm. 2.) klicke in das OnMouseEnter im OI von Label1 und schreibe im Quelltext folgendes
Delphi-Quellcode:
3.) nun wieder in de OI vom Label1 in OnMouseLeave() und doppelklick in der Methode schreibst du folgendes
procedure TForm1.Label1MouseEnter(Sender: TObject);
begin (Sender as TLabel).Font.Color := clRed; end;
Delphi-Quellcode:
4.) jetzt arbeitet das Label1 auf deinem Form schon wie gewünscht.
procedure TForm1.Label1MouseLeave(Sender: TObject);
begin (Sender as TLabel).Font.Color := clBlack; end; 5.) markiere alle anderen Labels von Label2 bis Label30 per Shift Taste 6.) gehe in den OI in OoMouseEnter() und wähle dort in der DropDown Liste die Methode .Label1OnMouseEnter() aus 7.) mache das gleiche mit OnMouseLeave() Nun haben alle 30 Labels die gleichen beiden Methoden, wie oben codiert in ihren Events zugewiesen. Du benötigst also KEINE 30*2 eigene Events um diese dann auf 2 Basismethoden umzudiregieren. Das Problem mit meiner Funktion ist das du nicht erkennen kannst ob die Mausbewegung ein neues Label selektiert bzw. das alte selektierte Label verlassen hat. Benötigst du diese Funktionalität so müsstest du meine Methode umbauen, inetwaso
Delphi-Quellcode:
Wichtig ist nur eines, egal welche Lösung du benutzt, du musst sie verstanden haben.
type
TForm1 = class(TForm) ...blabla private FCurrentLabel: TControl; ...blabla end. procedure TForm1.MouseMove(); var C: TControl; begin C := FindDragTarget(ClientToScreen(Point(X, Y)), False); if C <> FCurrentLabel then begin if (FCurrentLabel is TLabel) and (FCurrentLabel.Owner = Self) then TLabel(FCurrentLabel).Font.Color := clBlack; FCurrentLabel := C; if (FCurrentLabel is TLabel) and (FCurrentLabel.Owner = Self) then TLabel(FCurrentLabel).Font.Color := clRed; end; end; Ich empfehle also erstmal den Vorschlag von Faux genau zu verstehen, denn sein Vorschlag ist die Standardvorgehensweise, die man begriffen haben sollte. Also arbeite obige Punkte einfach mal ab. Gruß Hagen |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:41 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 by Thomas Breitkreuz