AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Mapscreen - Verbesserungsvorschläge, andere Lösungsansätze?
Thema durchsuchen
Ansicht
Themen-Optionen

Mapscreen - Verbesserungsvorschläge, andere Lösungsansätze?

Ein Thema von richard_boderich · begonnen am 4. Mai 2005 · letzter Beitrag vom 6. Mai 2005
Antwort Antwort
Benutzerbild von richard_boderich
richard_boderich

Registriert seit: 21. Jun 2004
Ort: Berlin
1.067 Beiträge
 
Delphi 7 Architect
 
#1

Mapscreen - Verbesserungsvorschläge, andere Lösungsansätze?

  Alt 4. Mai 2005, 15:07
Moin zusammen!

Ich hab vor, mir für mein neues Project einen kleinen Mapscreen für strategische Planungen
zu proggen. Funktioniert alles so ziemlich. Im Grunde kann ich die Karte jetzt per drag and Drop mit
der rechten Maustaste auf dem Form verschieben, und zusätzlich die karte nach allen Richtungen
scrollen. (Mauszeiger außerhalb des Forms) Allerdings finde ich meinen Code nicht gerade
super elegant und zweckgerichtet. *Ich denke Luckie wird sich erstmal an den Hals fassen und Aufschreien wollen* Das Ganze basiert auf der Umrechnung von Globalen Maus Coords mit
der Maus-CLientcoords von Image1 und den Variablen Form1. left / with bzw. Form1. top / height.

Eines stört mich allerdings, wenn ich das Bild draggen will und ich komme mit dem mauszeiger über
die Fomulargrenzen hinaus, faengt er sofort an zu scrollen. ich will aber das er nur scrollt, wenn
keine maustaste gedrückt ist. Dazu muesste ich den Globalen Status der Maustasten abfragen koennen und
ich weis leider nicht wie. Bei den Globalen Coordinaten gibst dafür ja GetcursorPos, da ist das kein Problem.

Vielleicht hatt ja jemand einen ganz anderen viel eleganteren Loesungsweg in der Hinterhand


Waere nett wenn jemand Vorschläge haette. THX schonmal im vorraus.

Mein BeispielProject ist im Anhang

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, jpeg;

type
  TForm1 = class(TForm)
    Image1: TImage;
    Timer1: TTimer;
    procedure Timer1Timer(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Image1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure Image1MouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);


  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  helper:boolean;
  terrorx,terrory:Integer;
implementation

{$R *.dfm}

procedure TForm1.Timer1Timer(Sender: TObject);
begin
if (mouse.cursorpos.x > form1.Left) and (mouse.cursorpos.x < form1.Left+form1.width) and
   (mouse.CursorPos.y>form1.Top) and (mouse.CursorPos.y < form1.top+form1.height) And (helper=true) then
   begin
   image1.left:=-terrorx+mouse.cursorpos.x-form1.left;
   image1.top:=-terrory+mouse.cursorpos.y-form1.top;
   end
   else
   begin
   helper:=false;
   //exit;
   end;


if helper=false then
begin
if (mouse.cursorpos.x<form1.Left) and (image1.left<=30) then image1.left:=image1.left+15;
if (mouse.cursorpos.x>form1.Left+form1.width) and (image1.Left+image1.width>=form1.width-30) then image1.left:=image1.left-15;
if (mouse.cursorpos.y<form1.top) and (image1.top<=30) then image1.top:=image1.top+15;
if (mouse.cursorpos.y>form1.top+form1.height) and (image1.top+image1.height>=form1.height-59)then image1.top:=image1.top-15;
end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
Form1.DoubleBuffered:=true;
end;

procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  if ssright in shift then
  begin
  terrorx:=+x+4;
  terrory:=+y+30;
  helper:=true;
  end
end;

procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
helper:=false;
end;


end.

So long,

euer Richard


PS: bitte sein nachsichtig mit mir Luckie , der Code ist von heute früh 1.30 - 3.30 Uhr

//Edit Project ist leider zu Groß zu Hochladen ca. 8Mb, deswegen mal meine unit1.pas-datei
//Edit benoetigt werden ein TTimer und ein TImage, wobei das bild groeßer als das Form sein muss, sonst ist das ja kein Problem. hehe
mfG Richard

Cimmams schrieb "das einzige was an ArmA gut ist, ist die Grafik bis 100m und der Rest ist so unreal wie unsere Demokratie."
  Mit Zitat antworten Zitat
Benutzerbild von richard_boderich
richard_boderich

Registriert seit: 21. Jun 2004
Ort: Berlin
1.067 Beiträge
 
Delphi 7 Architect
 
#2

Re: Mapscreen - Verbesserungsvorschläge, andere Lösungsansät

  Alt 6. Mai 2005, 14:13
*push*
mfG Richard

Cimmams schrieb "das einzige was an ArmA gut ist, ist die Grafik bis 100m und der Rest ist so unreal wie unsere Demokratie."
  Mit Zitat antworten Zitat
brechi

Registriert seit: 30. Jan 2004
823 Beiträge
 
#3

Re: Mapscreen - Verbesserungsvorschläge, andere Lösungsansät

  Alt 6. Mai 2005, 14:46
GetAsyncKeyState / GetKeyState

1 = linke maustaste
2 = rechte maustatse (wenn ich mich jetzt nicht vertue)
  Mit Zitat antworten Zitat
Benutzerbild von richard_boderich
richard_boderich

Registriert seit: 21. Jun 2004
Ort: Berlin
1.067 Beiträge
 
Delphi 7 Architect
 
#4

Re: Mapscreen - Verbesserungsvorschläge, andere Lösungsansät

  Alt 6. Mai 2005, 20:21
@brechi,

thx das war was ich brauchte
mfG Richard

Cimmams schrieb "das einzige was an ArmA gut ist, ist die Grafik bis 100m und der Rest ist so unreal wie unsere Demokratie."
  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 03:03 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