Drawgrid

killerdam Messages postés 21 Date d'inscription jeudi 3 mars 2005 Statut Membre Dernière intervention 26 mai 2006 - 26 mai 2006 à 20:53
ThWilliam Messages postés 418 Date d'inscription mardi 3 janvier 2006 Statut Membre Dernière intervention 26 novembre 2013 - 27 mai 2006 à 11:50
Bonjour tout le monde!



je voudrai savoir si il est possible de nommer les cellules d'une drawgrid (un nom qui me sert juste pour le traitement).
En faite je voudrai que certraine cellule de ma drawgrid corresponde à des salles

la cellule de "coordonné" [1,1] devrai correspondre a la  salle 0
la cellule de "coordonné" [1,5] devrai correspondre a la  salle 1
la cellule de "coordonné" [1,9] devrai correspondre a la  salle 2
la cellule de "coordonné" [1,13] devrai correspondre a la  salle 3
la cellule de "coordonné" [5,1] devrai correspondre a la  salle 4
la cellule de "coordonné" [5,5] devrai correspondre a la  salle 5
...

merci
ca doit pas etre très clair, mais je vous assure que ce n'est pas évident a expliquer

4 réponses

f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 35
26 mai 2006 à 21:11
simple

cellule a un type exemple "TCells"

il suffit de créer un tableau comme cela par exemple :

type
  TSallon = record
     Name : string;
     Cells: TCells;
  end;

  TSallons = array[0..5] of TSallon;

var
  Sallons : TSallons;

function GetSallon(const SallonName : string) : TCells;
var N : integer;
begin
  for N := 0 to 5 do
      if Sallons[N].Name := SallonName then begin
         result := Sallons[N].Cells;
         exit;
      end;
end;







procedure InitSallon;
begin

  Sallons[0].Name := 'Salle 0';

  Sallons[1].Name := 'Salle 1';

  Sallons[2].Name := 'Salle 2';

  Sallons[3].Name := 'Salle 3';

  Sallons[4].Name := 'Salle 4';

  Sallons[5].Name := 'Salle 5';





  Sallons[0].Cells := DrawGrid.Cell[1,1];

  Sallons[1].Cells := DrawGrid.Cell[1,5];

  Sallons[2].Cells := DrawGrid.Cell[1,9];

  Sallons[3].Cells := DrawGrid.Cell[1,13];

  Sallons[4].Cells := DrawGrid.Cell[5,1];

  Sallons[5].Cells := DrawGrid.Cell[5,5];

end;

et voila, aprés tu appel

with GetSallon('Salle 0') do
   // modification ou recuperation des propriétés et methodes de la cellule
end;

ps : possible erreurs, j'ai pas tester pour debugger
0
killerdam Messages postés 21 Date d'inscription jeudi 3 mars 2005 Statut Membre Dernière intervention 26 mai 2006
26 mai 2006 à 21:46
Le problème, c'est que la propriété cell n'existe pas avec la drawgrid (si je ne me trompe pas).


Merci
0
f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 35
27 mai 2006 à 00:34
en effet ....

alors la ... mmmm je vois pas trop comment faire.
0
ThWilliam Messages postés 418 Date d'inscription mardi 3 janvier 2006 Statut Membre Dernière intervention 26 novembre 2013 4
27 mai 2006 à 11:50
Salut,

Tu as les propriétés Col et Row qui te renvoient les coordonnées de la cellule active.

Tu pourrais peut-être te créer un tableau de string à 2 dimensions (colonnes, lignes)

var
   Salles: array[0..5, 0..5] of string;   // ou de type record avec nom,...

que tu initialises :
     Salles[0,0]:= 'Salle 0';
     Salles[0,1]:= ..........

récupération en te déplaçant dans le drawgrid :

procedure TForm1.DrawGrid1SelectCell(Sender: TObject; ACol, ARow: Integer;
  var CanSelect: Boolean);
begin
  if (Acol <= high(Salles)) and (ARow <=  high(Salles))  then
        edit1.text:= Salles[ACol, ARow];
end;

si tu veux aussi la valeur affichée dans le grid :

procedure TForm1.DrawGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
begin
     if (Acol <= high(Salles)) and (ARow <=  high(Salles))  then
     Drawgrid1.Canvas.TextOut(Rect.left, Rect.top, Salles[Acol,ARow]);
end;

Je ne sais pas si j'ai répondu à ta question...

A +
0
Rejoignez-nous