tutorials.de Buch-Aktion 05/2012
Seite 1 von 2 12 LetzteLetzte
ERLEDIGT
JA
ANTWORTEN
28
ZUGRIFFE
2806
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von ZeroGirl
    ZeroGirl ZeroGirl ist offline Mitglied Silber
    Registriert seit
    May 2004
    Ort
    M/V
    Beiträge
    51
    Ich soll ein Programm schreiben was einer Pivot-Tabelle in Excel ähnelt,
    dazu brauche ich Buttons die ich mit der maus in ein anderes feld auf der Form verschieben kann!

    Kann mir da irgendjemand weiterhelfen?

    Über eine schnelle antwort würde ich mich sehr freuen...

    Mfg

    ZeroGirl
    Geändert von ZeroGirl (29.06.04 um 14:52 Uhr)
     

  2. #2
    Avatar von Gawayn
    Gawayn Gawayn ist offline Mitglied Brokat
    Registriert seit
    Dec 2003
    Beiträge
    309
    Das Verschieben mit der Maus erfordert, dass du auf Mausereignisse reagierst. Du willst einen Button verschieben, das heißt, der Empfänger dieser Mausereignisse ist ein Button. Indem du nun Handler-Prozeduren für die jeweiligen Ereignisse des Buttons schreibst, kannst du so das Verschieben realisieren. Diese Mausereignisse sind beispielsweise OnMouseDown und OnMouseMove.

    Gawayn
     

  3. #3
    Avatar von ZeroGirl
    ZeroGirl ZeroGirl ist offline Mitglied Silber
    Registriert seit
    May 2004
    Ort
    M/V
    Beiträge
    51
    Danke für die Antwort!

    Ich werde es mal versuchen!

    Mir hat jemand irgendetwas von dem OnDragDrop Ereigniss erzählt, was hat es denn damit aufsich?
     

  4. #4
    Avatar von Gawayn
    Gawayn Gawayn ist offline Mitglied Brokat
    Registriert seit
    Dec 2003
    Beiträge
    309
    Mit OnDragDrop kann man auch Objekte mit der Maus ziehen und "fallenlassen". Allerdings ist diese Methode nicht so sehr etwas für Anfänger. Wenn du nähere Informationen möchtest, schau einfach in der Delphi-Hilfe zu dem Thema nach. Du kannst die Sache ja mal ausprobieren und gucken, was besser funktioniert!

    Gawayn
     

  5. #5
    Avatar von ZeroGirl
    ZeroGirl ZeroGirl ist offline Mitglied Silber
    Registriert seit
    May 2004
    Ort
    M/V
    Beiträge
    51
    In der Hilfe stehen leider keine wirklich brauchbaren Beispiele drinne.
    Naja, mal sehen vielleicht findet man ja noch was im i-net...
     

  6. #6
    Avatar von ZeroGirl
    ZeroGirl ZeroGirl ist offline Mitglied Silber
    Registriert seit
    May 2004
    Ort
    M/V
    Beiträge
    51
    Wäre das, das was ich suche?:

    procedure TFMForm.FileListBox1MouseDown(Sender: TObject;

    Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
    begin
    if Button = mbLeft then { Nur ziehen, wenn linke Maustaste gedrückt ist }
    with Sender as TFileListBox do { Sender als TFileListBox behandeln }
    begin
    if ItemAtPos(Point(X, Y), True) >= 0 then { Element vorhanden? }
    BeginDrag(False); { Wenn ja, dann ziehen }
    end;
    end;

    Oder liege ich da immer noch falsch?
    Kann man das überhaupt mit Buttons machen?
    Oder geht es mit was anderem leichter oder so?
     

  7. #7
    Avatar von Gawayn
    Gawayn Gawayn ist offline Mitglied Brokat
    Registriert seit
    Dec 2003
    Beiträge
    309
    Hast du es denn noch nicht in einem eigenen Programm ausprobiert? Ich analysiere den Code, den du da reingeschrieben hast, jetzt nicht, weil es grundsätzlich nicht so sinnvoll ist, sich über Code Gedanken zu machen, den man noch gar nicht getestet hat. Ich würde dir den Rat geben, einfach ein wenig mit Delphi herumzuprobieren, und wenn etwas nicht funktioniert, zu fragen.

    Gawayn
     

  8. #8
    Avatar von ZeroGirl
    ZeroGirl ZeroGirl ist offline Mitglied Silber
    Registriert seit
    May 2004
    Ort
    M/V
    Beiträge
    51
    Ich muss ja erstmal was finden was ich zum ausprobieren nehmen kann!

    Aber trotzdem danke erstmal für deine Hilfe...
     

  9. #9
    Avatar von ZeroGirl
    ZeroGirl ZeroGirl ist offline Mitglied Silber
    Registriert seit
    May 2004
    Ort
    M/V
    Beiträge
    51
    Mir wird immer wieder dieser fehler angezeigt!

    [Fehler] Unit1.pas(56): Undefinierter Bezeichner: 'ItemAtPos'

    Das ist der Quelltext dazu:

    begin
    if Button = mbLeft then {Nur ziehen, wenn linke Maustaste gedrückt ist}
    with Sender as TButton do {Sender als Button behandeln}
    begin
    if ItemAtPos(Point(X, Y), True) >= 0 then {Element vorhanden?}
    BeginDrag(False); {Wenn ja, dann ziehen}
    end;
    end;

    Wo isn da der fehler?
     

  10. #10
    Avatar von ZeroGirl
    ZeroGirl ZeroGirl ist offline Mitglied Silber
    Registriert seit
    May 2004
    Ort
    M/V
    Beiträge
    51
    O.K. das mit dem fehler hat sich erledigt, habe ihn endlich gefunden!
    Jetzt wird das Prog wieder Compiliert...

    Aber so ganz klappen tut es immer noch nicht! Der Button will sich einfach
    nicht bewegen! Nur der Pfeil der Maus sieht so aus als würde der Button
    schon gezogen werden...

    Naja, wenigstens etwas...
     

  11. #11
    Avatar von Gawayn
    Gawayn Gawayn ist offline Mitglied Brokat
    Registriert seit
    Dec 2003
    Beiträge
    309
    Ich sehe schon, es ist zu kompliziert, um es hier mit Worten zu erklären. Deswegen will ich einmal vollständigen Code hier posten. Den hab ich extra für dich geschrieben .

    Mein Programm hat ein Fenster (namens MainWin) mit einem einzigen Button (namens Button). Wenn du mit der rechten Maustaste auf den Button klickst, kannst du ihn ziehen. Die Variable OldDelta ist notwendig, damit der Button nicht dauernd hin- und herspringt. Wenn man nämlich den Button bewegt, während der Mauszeiger über ihm steht, wird ein neues MouseMove-Ereignis ausgelöst, was wiederum ein Bewegen des Buttons verursacht, was wiederum ein MouseMove-Ereignis verursacht... usw. Mit OldDelta berechne ich, ob sich der Mauszeiger tatsächlich selber bewegt hat oder ob sich nur der Button unter dem Mauszeiger bewegt hat. In letzterem Fall darf der Button nicht erneut bewegt werden.

    Ist es das, was du realisieren wolltest? Ich hoffe...
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    
    unit MoveButton_Main;
     
    interface
     
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, ComCtrls;
     
    type
      TMainWin = class(TForm)
        Button: TButton;
        procedure ButtonMouseDown(Sender: TObject; Button: TMouseButton;
          Shift: TShiftState; X, Y: Integer);
        procedure ButtonClick(Sender: TObject);
        procedure FormCreate(Sender: TObject);
        procedure ButtonMouseMove(Sender: TObject; Shift: TShiftState; X,
          Y: Integer);
        procedure ButtonMouseUp(Sender: TObject; Button: TMouseButton;
          Shift: TShiftState; X, Y: Integer);
      private
        { Private declarations }
      public
        { Public declarations }
        OldPos: TPoint ;
        OldDelta: TPoint ;
        Dragging: Boolean ;
      end;
     
    var
      MainWin: TMainWin;
     
    implementation
     
    {$R *.dfm}
     
    procedure TMainWin.ButtonMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    begin
      if( Button=mbRight ) then
      begin
        Dragging := True ;
      end ;
    end;
     
    procedure TMainWin.ButtonClick(Sender: TObject);
    begin
      ShowMessage( 'Clicked' ) ;
    end;
     
    procedure TMainWin.FormCreate(Sender: TObject);
    begin
      Dragging := False ;
    end;
     
    procedure TMainWin.ButtonMouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    begin
      if( Dragging and ((X-OldDelta.X<>OldPos.X) or (Y-OldDelta.Y<>OldPos.Y)) ) then
      begin
        OldDelta.X := OldPos.X-X ;
        OldDelta.Y := OldPos.Y-Y ;
        Button.Left := Button.Left-OldDelta.X ;
        Button.Top := Button.Top-OldDelta.Y ;
      end ;
     
      OldPos.X := X ;
      OldPos.Y := Y ;
    end;
     
    procedure TMainWin.ButtonMouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    begin
      Dragging := False ;
    end;
     
    end.
    Geändert von Gawayn (24.06.04 um 13:02 Uhr)
     

  12. #12
    Avatar von ZeroGirl
    ZeroGirl ZeroGirl ist offline Mitglied Silber
    Registriert seit
    May 2004
    Ort
    M/V
    Beiträge
    51
    So, problem gelöst!
    Das mit den Buttons funktioniert jetzt!
    Zwar bewegen sich die Buttons an sich nicht aber wenn man auf den Button
    Klickt und ihn zu senem zielort zieht ist an der Maus ein kleines Blatt zu sehen!
    Die daten werden also übertragen...
     

  13. #13
    Avatar von ZeroGirl
    ZeroGirl ZeroGirl ist offline Mitglied Silber
    Registriert seit
    May 2004
    Ort
    M/V
    Beiträge
    51
    100000 Dank!

    Find ich cool das du dich da extra hingesetzt hast und das geproggt für mich hast!
    Bin dir voll dankbar!

    Du bist ein schatz!
    Küsschen an dich!

    Ich weiß gar nicht wie ich dir da danken soll!
     

  14. #14
    Avatar von Gawayn
    Gawayn Gawayn ist offline Mitglied Brokat
    Registriert seit
    Dec 2003
    Beiträge
    309
    Null problemo & gern geschehen
     

  15. #15
    Avatar von ZeroGirl
    ZeroGirl ZeroGirl ist offline Mitglied Silber
    Registriert seit
    May 2004
    Ort
    M/V
    Beiträge
    51
    So, die Buttons kann man ja nun über die Form bewegen!
    Nun steht ein weiteres Problem an!


    Die Coordinaten des Buttons sollen in einem Label ausgegeben werden!
    Also wo sich der Button grade auf der Form befindet!
    Kann mir da jemand weiterhelfen?

    Mfg

    ZeroGirl
     

Ähnliche Themen

  1. Hintergrund mit Maus verschieben
    Von mxxxx im Forum Javascript & Ajax
    Antworten: 11
    Letzter Beitrag: 15.04.10, 11:44
  2. Link mit Maus verschieben
    Von hadda im Forum Javascript & Ajax
    Antworten: 15
    Letzter Beitrag: 25.05.08, 19:50
  3. IE7 Streikt: DIV mit Maus verschieben
    Von X-Color im Forum Javascript & Ajax
    Antworten: 3
    Letzter Beitrag: 10.10.07, 09:34
  4. Form mit Maus verschieben
    Von Meldur im Forum .NET Windows Forms
    Antworten: 5
    Letzter Beitrag: 09.07.07, 14:25
  5. Anwender soll im Browser Bild mit Maus verschieben können
    Von lispelchen im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 1
    Letzter Beitrag: 10.02.04, 02:56