AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi [Achtung Anfänger ^^] Färben von Panels mit gedrückter Maus
Thema durchsuchen
Ansicht
Themen-Optionen

[Achtung Anfänger ^^] Färben von Panels mit gedrückter Maus

Ein Thema von Darkdavos · begonnen am 11. Feb 2009 · letzter Beitrag vom 12. Feb 2009
Antwort Antwort
Darkdavos

Registriert seit: 11. Feb 2009
Ort: Brannenburg
3 Beiträge
 
Delphi 6 Personal
 
#1

[Achtung Anfänger ^^] Färben von Panels mit gedrückter Maus

  Alt 11. Feb 2009, 13:04
Erstmal hallo Forum =)

Ich bin erst neu hier und arbeite mich erst in die Marterie von Delphi ein und versteh sie noch nicht ganz. Ich mach gerade ein Praktikum von der Schule aus wo ich einen Kalender in Delphi erstellen soll. Mein Chef wünscht sich von mir ein Kalender mit einigen Funktionen drin, die ich eigentlich noch alle gut hinbekommen habe, bis auf eine.

Ich soll (ich denke mal es ist eine) eine Draging Funktion bauen mit der ich Panels markieren kann. Ab diesem Panel soll man anfangen können zu ziehen und über die nächsten drüber...
Diese sollen dann einfach die Farbe wechseln....
Das Problem an der Sache ist das mein Chef auch nicht genau weiß wie es in Delphi funktionieren soll, ich soll es jetzt mal selbst schauen ob ich dazu was hinbekomme

Ich hab das jetzt schon per Mousemove probiert und eine Variable mit Mousedown immer je nach maus 0 und 1 wechseln lassen...
Per Mousemove lässt sich aber nur in einem Feld drinen mit gedrückter Maustaste die Farbe wechseln, funktioniert aber nicht für die nebenstehenden Panels beim darüber fahren...

Die Frage ist jetzt, ist Drag and DragOver das richtige dafür? Und wie funktioniert es?

Ich besitze verschiedene Panels die z. B. J2P1 heißen und J+1 ... also J2P1 J3P1 J4P1 ... so weiter

Ein Code wie ich es Versucht habe:

Delphi-Quellcode:
procedure TFormJanuar.J2P1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
    if Button=mbLeft then
    J2P1.BeginDrag(true);
end;

procedure TFormJanuar.J2P1DragDrop(Sender, Source: TObject; X, Y: Integer);
begin
    J2P1.color:=clred;
end;

procedure TFormJanuar.J2P1DragOver(Sender: TObject; Source: TDragDockObject; X,
      Y: Integer; State: TDragState; var Accept: Boolean);
begin
  Accept:= true;
  J2P1.color:=clred;
  J2P1.DragCursor:=CrDrag;
end;

procedure TFormJanuar.J3P1DragOver(Sender: TObject; Source: TDragDockObject; X,
      Y: Integer; State: TDragState; var Accept: Boolean);
begin
  Accept:= true;
  J2P1.color:=clred;
  J2P1.DragCursor:=CrDrag;
end;
.
.
.
.
Ich bin nicht wirklich gut in Delphi, deswegen entschuldige ich mich dafür, dass ich so etwas "Lowes" hier frag ... aber ich hab echt kein Peil...

Ich sitz schon seit Montag über 3 verschieden Delphibüchern und such auch in verschiedenen Foren nach Antworten, finde aber nur Codeschnipsel die ich nicht verstehe. ='(
(Die Suchfunktion hat einige Ergebnisse zu Drag and Drop bei euch herausgebracht, die ich brav durchgelesen habe, aber ich schaff nicht sie selbst zu verwenden und werde auch nicht wirklich schlau aus ihnen. Die Themen sind meist schon so hoch gestellt das ich nicht nachkomme...)

Für Antworten würde ich euch sehr danken
Greet David
  Mit Zitat antworten Zitat
nuclearping

Registriert seit: 7. Jun 2008
708 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#2

Re: [Achtung Anfänger ^^] Färben von Panels mit gedrückter M

  Alt 11. Feb 2009, 13:08
Warum benutzt du dafür Panels?

Schau dir mal den Virtual Tree View an -> http://www.soft-gems.net/
  Mit Zitat antworten Zitat
Darkdavos

Registriert seit: 11. Feb 2009
Ort: Brannenburg
3 Beiträge
 
Delphi 6 Personal
 
#3

Re: [Achtung Anfänger ^^] Färben von Panels mit gedrückter M

  Alt 11. Feb 2009, 13:14
An der Gundstruktur von dem Programm möchte ich bitte nichts mehr ändern, es kommt jetzt schon auf ungefähr 100.000 Zeilen, weil schon wirklich viele Funktionen drin stecken....

Jetzt an dem Grundaufbau etwas zu ändern wäre nicht umbedingt hilfreich ^-^
  Mit Zitat antworten Zitat
nuclearping

Registriert seit: 7. Jun 2008
708 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#4

Re: [Achtung Anfänger ^^] Färben von Panels mit gedrückter M

  Alt 11. Feb 2009, 13:25
Das Problem ist afaik, dass der Event, bzw. die Message-Verarbeitung, wenn die Maus auf einem Panel gedrückt wurde, von diesem Panel auch "behalten" und nicht weiter dispatcht wird.

Da gabs aber einen Befehl, den du im MouseOver (oder MouseDown?) aufrufen konntest, der das wieder freigibt. War hier glaube sogar in einem der letzten Beiträge.
  Mit Zitat antworten Zitat
xy124

Registriert seit: 3. Dez 2007
146 Beiträge
 
Delphi 7 Personal
 
#5

Re: [Achtung Anfänger ^^] Färben von Panels mit gedrückter M

  Alt 11. Feb 2009, 16:24
ein Glück, das Panels Rechteckig sind...
An die Mausposition kommst du noch heran?
dann kannst du ja ganz einfach Auswerten, ob die Maus in einem anderen Panel ist!
Delphi-Quellcode:
if ( (panel.left<mouse_x) and (mouse_x < panel.left+panel.width) ) and
   ( (panel.top<mouse_y) and (mouse_y < panel.top+panel.height) ) then
  //die Maus ist drin!
o o
LJ
TTT
  Mit Zitat antworten Zitat
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.312 Beiträge
 
Delphi XE2 Professional
 
#6

Re: [Achtung Anfänger ^^] Färben von Panels mit gedrückter M

  Alt 11. Feb 2009, 16:28
Hallo,

was wäre, wenn beim Fahren mit der Maus festgestellt wird, welches Control unter der Maus ist und dann dementsprechend reagieren?

Einen Code dafür gäbe es bei den Schweizern um das Control festzustellen.

(Ist jetzt einfach nur mal so ein Gedankengang)
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.135 Beiträge
 
Delphi 12 Athens
 
#7

Re: [Achtung Anfänger ^^] Färben von Panels mit gedrückter M

  Alt 11. Feb 2009, 16:31
wenn Maustaste gedrückt wird (OnMouseDown), dann mit ReleaseCapture die Maus freigeben und des Status "Taste gedrückt" in einer Variable speichern ... in OnMouseUp diesen Status dann wieder löschen.

nun kannst du im OnMouseMove der Panels prüfen ob dieser Status gesetzt ist und dementsprechend darauf reagieren. ( if teste_gedrückt then ... )

PS: wenn du die Umfärbung nur im OnMouseMove ausführst, dann solltest du am Ende von OnMouseown am Besten OnMouseMove einmal direkt aufrufen ... falls mal wer nur klicken und nicht Ziehen will
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Darkdavos

Registriert seit: 11. Feb 2009
Ort: Brannenburg
3 Beiträge
 
Delphi 6 Personal
 
#8

Re: [Achtung Anfänger ^^] Färben von Panels mit gedrückter M

  Alt 12. Feb 2009, 09:30
Vielen dank euch allen =) jetzt funktioniert das Programm!

Thread kann von meiner Seite aus Geschlossen werden
  Mit Zitat antworten Zitat
Benutzerbild von _frank_
_frank_

Registriert seit: 21. Feb 2003
Ort: Plauen / Bamberg
922 Beiträge
 
Delphi 3 Professional
 
#9

Re: [Achtung Anfänger ^^] Färben von Panels mit gedrückter M

  Alt 12. Feb 2009, 20:59
willst du wirklich das panel während des drag-vorgangs verschieben?

ich hab mal 2 Alternativ-Methoden angehängt
einmal mit einem dynamisch erzeugten Cursor und einmal mit dragimages.

Gruß Frank
Angehängte Dateien
Dateityp: zip paneldrag_156.zip (112,2 KB, 21x aufgerufen)
Dateityp: zip drag_224.zip (143,6 KB, 24x aufgerufen)
  Mit Zitat antworten Zitat
Antwort Antwort


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 13:54 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