Newsgroup: it.comp.lang.delphi
Titolo: Gestione grafica

Salve a tutti,
volevo chiedere un consiglio su come operare per generare un progetto di
tipo ristorativo, praticamente:
a video devo mostrare la disposizione dei tavoli della sala del
ristorante ma siccome è per una catena di ristoranti (3 locali) ogni
sala ha una disposizione divera e la modifica dele ubicazioni dei tavoli
deve essere dinamica, quindi modificabile in ogni momento, sinceramente
non so da dove partire qualcuno ha mai fatto un'operazione di questo
tipo???
Grazie in anticipo per i suggerimenti
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 un'operazione di questo tipo???
Così su due piedi ti direi: creati con un programma di grafica a tua scelta
delle immagini stilizzate dei vari tipi di tavoli (quadrato, rettangolare,
triangolare, tetraedrico...) magari con sedie e tovagliuoli annessi e li
salvi in bmp; poi, visto che il tuo programma lavorerà (penso) a pieno
schermo, utilizzi dei semplici TImage che mostrano le varie bitmap a delle
coordinate che leggerai da un file; ovviamente per fare questo dovrai fare
una piccola utility di "configurazione" dove si potranno creare, spostare i
tavoli col drag'n'drop (basta usare l'evento mousemove e simili) e cambiare
il tipo di ognuno e la numerazione; basta che tu ti salvi la posizione sulla
form e il tipo in un file ini o qualcosa del genere, et voilà, il pranzo è
servito.
Che bello, mi piacerebbe farlo ^__^;
--
Jax
====
Mendichiamo l'amore all'altro nonostante esista un mondo che ne è pieno.

 tavoli deve essere dinamica, quindi modificabile in ogni momento,
Per creare i tvoli utilizza dei componenti image o shape e poi:
http://tinyurl.com/wvcj
-- 
I'am what I'am, I do what I can

 Che bello, mi piacerebbe farlo ^__^;
Allora fallo! Cosě fai pure un favore a Sielnzio. :D
Acqua


 tipo???
Se non ho capito male, il tuo desiderio č quello di avere una serie di
immagini ridisponibili su un pannello (o su una form) a runtime mediante il
"drag and drop" con il mouse, a runtime.
Utilizzando, ad esempio, un solo componente TImage, l'idea č quella di
gestire gli eventi OnMouse{Down, Move}, nel seguente modo:
1) quando si verifica OnMouseDown salvi due variabili a scelta (ad esempio:
OldLeft e OldTop) che identificano la posizione attuale, e identifichi le
coordinate attuali del mouse come il centro di un sistema di riferimento
cartesiano : (Xmouse,Ymouse)=(0,0)
2) Per ogni spostamento del mouse (OnMouseMove), che avvenga in modo
concomitante a MouseDown, ricalcoli left e top nel modo seguente:
        Timage->Left=Oldleft+XMouse;
        TImage->Top=OldTop+YMouse;
Con Xmouse e YMouse che assumeranno valori positivi o negati a seconda della
posizione relativa del cursore rispetto all'origine degli assi
precedentemente fissata.
Naturalmente, per piů di un'immagine presente sul pannello, il ragionamento
rimane analogo.
L'unica differenza č, nell'ultimo caso, capire quale sia l'immagine da
spostare (ma č una questione facilmente sormontabile).
Ciao,
A

Per quelli a cui possa interessare, posto il codice (un po' sporco, e non
molto ottimizzato, a dire il vero) per fare il drag and drop di un immagine
in una form.
Il codice è scritto con C++ Builder, ma dovrebbe essere semplice trasferirlo
nel corrispondente Delphi.
Gli eventi sono OnDragOver e OnStartDrag (al contrario di quanto dicevo nel
precedente post, in cui imputavo, a braccio, come responsabili gli eventi
MouseMove e MouseDown), e si ha la seguente dichiarazione di variabili
globali:
int XMouse, YMouse, XImage, YImage, TopDiff, LeftDiff;
void __fastcall TForm1::Image1DragOver(TObject *Sender, TObject *Source,
      int X, int Y, TDragState State, bool &Accept)
{
int AMX, AMY; //actual mouse coordinates
AMX=Controls::Mouse->CursorPos.x;
AMY=Controls::Mouse->CursorPos.y;
Image1->Left=LeftDiff+AMX;
Image1->Top=TopDiff+AMY;
}
void __fastcall TForm1::Image1StartDrag(TObject *Sender,
      TDragObject *&DragObject)
{
XImage=Image1->Left;
YImage=Image1->Top;
XMouse=Controls::Mouse->CursorPos.x;
YMouse=Controls::Mouse->CursorPos.y;
LeftDiff=Image1->Left-XMouse;
TopDiff=Image1->Left-YMouse;
}
Ciao a tutti,
A

> a video devo mostrare la disposizione dei tavoli della sala del ristorante
lo sai, vero, che l'utilita' di un sistema del genere e' assolutamente zero?
1) chi sta alla cassa (e quindi al pc) non dispone i clienti ai tavoli; e'
un lavoro di cui si occupa il personale di sala
2) i tavoli vengono, spesso e volentieri, spostati, uniti, divisi,
riassemblati, a seconda delle necessita' (es. tavolo 2+tavolo 3 vengono
uniti in un unico tavolo, magari chiamato 10), ed e' impensabile che chi sta
alla cassa si metta a ridisporre la mappa volta per volta
Ciao, Sandro

Bisogna sempre accontentare il cliente anche se la cosa che chiede č inutile
Dopotutto sono loro che pagano
-- 
_________________________________________________
Edmondo Di Tucci 
www.powernetsi.it/edmondo
 icq: 228646758
Le vie del signore sono infinite... prendine una e levati di torno!

 Dopotutto sono loro che pagano
in generale e' cosi', tuttavia se stiamo fornendo al cliente uno strumento
di lavoro, e' opportuno che gli diamo uno strumento che sia il migliore
possibile; bisogna cercare quindi di farlo ragionare su quanto siano utili -
o meno - certe caratteristiche. Nello specifico, la "mappa grafica" dei
tavoli non ha alcuno scopo pratico e, anzi, dovrebbe essere tenuta
costantemente aggiornata, facendo perdere quindi tempo all'operatore del pc
che di solito e' un cameriere o chi per lui, e che probabilmente avrebbe di
meglio da fare.
Ciao, Sandro

 alla cassa si metta a ridisporre la mappa volta per volta
Tavolo 2 ovviamente sta vicino tavolo 3. Tavolo tre viene disabilitato in
quanto fuso col 2.
Rimane attivo il 2 che *copre* anche  il 3.
Per 2 lunghi anni ho lavorato su un sistema Touch-Screen. Tale software si
occupava anche della gestione dei tavoli.
Permetteva sia la gestione degli stessi senza uso della mappa a video che
non.
Ma tutti i clienti (e parlo di grandi catene di ristorazione Italiane e non)
usavano escusivamente la gestione di questi attraverso la mappa della sala.
La mappa era composta da n x n pulsanti dove venivano visualizzati solo
quelli corrispondenti ai tavoli in sala.
Sulla superfice di ogni pulsante venivano visualizzate diverse informazione
quali:
1) Numero del tavolo
2) numero dei coperti
3) Il colore dello sfondo cambiava in base allo stato (libero, occupato,
conto al tavolo)
A video, guardando la mappa, si riusciva al volo a sapere:
1) Se c'erano tavoli liberi
2) Se c'erano conti da ritirare (e quindi tavoli che stanno per liberarsi)
3) Se ti arrivavano 10 persone con la sala piena, capivi al volo quali
tavoli adiacenti erano in fase di *pagamento*.
Per un cameriere appena arrivato, la mappa aiuta molto (si orienta meglio)
--
Acqua