AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Label unter Mausposition

Ein Thema von Lilo · begonnen am 13. Sep 2005 · letzter Beitrag vom 11. Nov 2005
Antwort Antwort
Seite 3 von 4     123 4      
Benutzerbild von Mr_G
Mr_G

Registriert seit: 2. Sep 2004
Ort: Duisburg
468 Beiträge
 
Delphi 2006 Professional
 
#21

Re: Label unter Mausposition

  Alt 13. Sep 2005, 19:58
@ 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.
Jan
  Mit Zitat antworten Zitat
Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#22

Re: Label unter Mausposition

  Alt 13. Sep 2005, 20:01
Zitat:
Andererseits besteht aber auch jederzeit die Gefahr, dass der Helfer für intelligentes Mitdenken abgewatscht wird.
Sehe ich auch so, intelligent ist es erstmal exakt auf die Fragestellung einzugehen und die verschiedenen Möglichkeiten der Lösung erstmal darzulegen und dann abzuwägen was die beste davon ist.

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 hab ja nix gegen komplexen Code Aber wenns einfacher geht, und das selbe bewirkt, dann bevorzuge ich das einfachere.
Dein Code "kann" zwar mehr, in diesem Fall, ist es aber (du hast es selbst gesagt), egal, welchen Code man verwendet...
Ich habe nicht gesagt das es "egal" ist welchen Code man verwendet, du legst mir damit Worte in den Mund.

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
  Mit Zitat antworten Zitat
Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#23

Re: Label unter Mausposition

  Alt 13. Sep 2005, 20:04
@M_Gr:

Zitat:
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! ..... nicht wenn es von einem TControl abstammt.
Uff, lies die Hilfe bitte und dann urteile neu. Was kann ICH dafür das Borlands Entwickler die Funktion die ein beliebiges von TControl abgleitetes Control unter einer gegebenen Koordinate FindDragTarget() genannt haben.
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
  Mit Zitat antworten Zitat
Benutzerbild von faux
faux

Registriert seit: 18. Apr 2004
Ort: Linz
2.044 Beiträge
 
Turbo Delphi für Win32
 
#24

Re: Label unter Mausposition

  Alt 13. Sep 2005, 20:09
Zitat von negaH:
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.
Das hat auch niemand getan. Es wurde lediglich gesagt (das hast du sogar selbst gesagt (jetzt aber wirklich.. )), dass deine Möglichkeit für einen Anfänger schwerer zu verstehen ist.

Zitat von negaH:
Nochwas: was hat .NET mit der Sache zu tuen ??
Nichts. Deswegen auch das Suffix "Aber egal..."...

@Lilo:
Und hast du das Problem gelöst?
Faux Manuel
Wer weiß, dass er nichts weiß, weiß mehr, als der der nicht weiß, dass er nichts weiß.
GoTrillian
  Mit Zitat antworten Zitat
Benutzerbild von hanselmansel
hanselmansel

Registriert seit: 23. Feb 2005
Ort: Kaiserslautern
279 Beiträge
 
Delphi 2009 Enterprise
 
#25

Re: Label unter Mausposition

  Alt 13. Sep 2005, 20:12
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!
Es gibt nur sehr wenige Probleme auf dieser Welt, die sich nicht mit einigen hundert Gramm Sprengstoff lösen ließen.
  Mit Zitat antworten Zitat
Lilo

Registriert seit: 10. Jul 2005
26 Beiträge
 
#26

Re: Label unter Mausposition

  Alt 13. Sep 2005, 20:15
hagens idee ist vom prinzip er genau das was ich brauche ^^

das problem, mal ein kleines bsp.:,

Delphi-Quellcode:
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;
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 ^^
  Mit Zitat antworten Zitat
Benutzerbild von faux
faux

Registriert seit: 18. Apr 2004
Ort: Linz
2.044 Beiträge
 
Turbo Delphi für Win32
 
#27

Re: Label unter Mausposition

  Alt 13. Sep 2005, 20:17
Hast du es nun geschafft, oder war dein letzer post ein "Bitte Helft mir" Post?
Faux Manuel
Wer weiß, dass er nichts weiß, weiß mehr, als der der nicht weiß, dass er nichts weiß.
GoTrillian
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#28

Re: Label unter Mausposition

  Alt 13. Sep 2005, 20:25
Hi Lilo,

Zitat von Lilo:
hagens idee ist vom prinzip er genau das was ich brauche
bevor du noch die 60 Prozeduren kodierst - sehe ich das auch so.

Ich nenne das jetzt mal eine wohldurchdachte Entscheidung, die auch Hagen versöhnen sollte...

marabu
  Mit Zitat antworten Zitat
Benutzerbild von faux
faux

Registriert seit: 18. Apr 2004
Ort: Linz
2.044 Beiträge
 
Turbo Delphi für Win32
 
#29

Re: Label unter Mausposition

  Alt 13. Sep 2005, 20:29
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.
Faux Manuel
Wer weiß, dass er nichts weiß, weiß mehr, als der der nicht weiß, dass er nichts weiß.
GoTrillian
  Mit Zitat antworten Zitat
Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#30

Re: Label unter Mausposition

  Alt 13. Sep 2005, 20:35
Zitat:
ich müsste dann ja bei allen 30 labeln mouseenter mouseleave jeweils 1 procedure machen...
Ok, Faux hat es dir schon gesagt, nun nochmal.

1.) du hast 30 labels auf deinem TForm.
2.) klicke in das OnMouseEnter im OI von Label1 und schreibe im Quelltext folgendes

Delphi-Quellcode:
procedure TForm1.Label1MouseEnter(Sender: TObject);
begin
  (Sender as TLabel).Font.Color := clRed;
end;
3.) nun wieder in de OI vom Label1 in OnMouseLeave() und doppelklick in der Methode schreibst du folgendes

Delphi-Quellcode:
procedure TForm1.Label1MouseLeave(Sender: TObject);
begin
  (Sender as TLabel).Font.Color := clBlack;
end;
4.) jetzt arbeitet das Label1 auf deinem Form schon wie gewünscht.
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:
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;
Wichtig ist nur eines, egal welche Lösung du benutzt, du musst sie verstanden haben.
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
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 4     123 4      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:56 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz