UTILISATION DES CARTE GEO SUR DELPHI ? [Résolu]

Signaler
Messages postés
5
Date d'inscription
samedi 17 janvier 2009
Statut
Membre
Dernière intervention
24 mai 2009
-
Messages postés
4719
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
1 février 2021
-
salut a tous

je veux faire rentrer une petite carte dans mon logiciel (gestion du personnel et du trafique dans un port commerciale) qui aura comme tache , la visualisation des navires a quais je me suis inspirer d'un site web
http://www.portdebejaia.com.dz/epb.htm
dans le menu a gauche allez a poste a quai

y a t'il un moyen pour faire un schema pareil j'utilise delphi 5 pro

j'utilise une base de donnée navire qui est mise a jour quotidiennement entrer sortie c a dire que le schema peut être relier avec pour récupérer les navires a quai

merci d'avance

<!-- / message -->

7 réponses

Messages postés
2527
Date d'inscription
jeudi 15 janvier 2004
Statut
Membre
Dernière intervention
16 octobre 2019
16
Salut,


- Tu mets une carte du port dans un TImage.

  Si la carte est trop grande, tu mets ce TImage dans une TScrollBox.

- Pour chaque quai, tu prévoies une petite TImage représentant un navire sur fond uni avec la propriété 'transparent' et 'ShowHint' à true.

- A chaque mise à jour, tu devras jouer sur la propriété 'visible' de ces vignettes en fonction de la présence ou de l'absence de navire à ce quai.

- Les renseignements sur le cargo seront mis à jour dans la propriété 'Hint' de chaque vignette.


Voilà, en gros, le principe à suivre.
Messages postés
4719
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
1 février 2021
14
bonjour,
Les emplacemenst des bateaux étant fixes, leurs images étant les mêmes, les propriétes des navires étant reliés eux aussi à la base de données..
bref, que reste t-il à concevoir?

Le passage de la souris (OnMouseMove) sur la zone de l'image concernée et à afficher une petite forme ou un memo ou list box ou un conteneur quelconque récupérant les infos de la base..

cantador
Messages postés
5
Date d'inscription
samedi 17 janvier 2009
Statut
Membre
Dernière intervention
24 mai 2009

merci 

mais les navires  sont pas fixes sur leur emplacements puisque il sont misent a jour quotidiennement des leur sorties et entrees et en plus ils vont pas toujours a un emplacement fixe :

 dans la mise a jour quotidienne des navires j'utilise une table de donnee
"navire : c
"date d'arrivee : d
"tonnage generale : n
"poste a quai : d

c a dire que chaque navire entrant doit avoir un emplacement nouveaux alors une nouvelle image du navire dans la carte du port et quand le navire sort l'image doit disparraitre .
Messages postés
4719
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
1 février 2021
14
c a dire que chaque navire entrant doit avoir un emplacement nouveaux

ce sont les emplacements réels ou des emplacements définis à l'avance ou aléatoires ?

cantador
Messages postés
5
Date d'inscription
samedi 17 janvier 2009
Statut
Membre
Dernière intervention
24 mai 2009

salut

j'ai neuf poste a quai (emplacement) chaque poste a un nom , si je fais par exemple entrer un navire je doit specifier son poste a quai , apres dans dans la carte je doit avoir une image d'un navire a l'emplacemet donnee .

merci
Messages postés
5
Date d'inscription
samedi 17 janvier 2009
Statut
Membre
Dernière intervention
24 mai 2009

merci

je vais voir cette methode apres  si je rencontre quelque problemes je vais faire un autre poste plus specifique

merci a tous
a la prochaine .....
Messages postés
4719
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
1 février 2021
14
autre solution :
voici un exmple avec un rectangle image mais on peut aussi faire une forme plus précise pour les bateaux avec un polygone (avec un Array of Tpoints) et créer une fonction PointInPolygone :

unit Unit1;


interface


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


type
  TForm1 = class(TForm)
    Memo1: TMemo;
    Image1: TImage;
    procedure FormCreate(Sender: TObject);
  private
    procedure AppMessage(var Msg: TMsg; var Handled: Boolean);
    procedure StockageInfo;
  public
    { Public declarations }
  end;


var
  Form1: TForm1;


implementation


{$R *.dfm}


procedure TForm1.StockageInfo;
begin
  Memo1.lines.Add(' '); // premier élèment de la bdd
  Memo1.Lines.Add(' '); // 2e élèment de la bdd
  // etc etc.
end;


procedure TForm1.AppMessage(var Msg: TMsg; var Handled: Boolean);
var
  pt: TPoint;
  r: TRect;
begin
  if (Msg.message = WM_MOUSEMOVE) then
  begin
    getCursorPos(pt);
    pt := ScreenToClient(pt);
    r := Rect(Image1.Left, Image1.Top,
      Image1.Left + Image1.Width, Image1.Top + Image1.Height);


    if PtInRect(r, pt) then
    begin
      Memo1.Left := Image1.Left;
      Memo1.Clear;
      StockageInfo;
      Memo1.Visible := true;
    end
    else
      Memo1.Visible := false;
  end;
end;


procedure TForm1.FormCreate(Sender: TObject);
begin
  Memo1.Visible := false;
  Application.OnMessage := AppMessage;
end;


end.

cantador