Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   stringgrid benutzen (https://www.delphipraxis.net/148575-stringgrid-benutzen.html)

funkuchn 4. Mär 2010 14:37


stringgrid benutzen
 
Hey Leute,
kann mir bitte einer erklären, wie OnSelectCell funzt?
hab n Memoryspiel programmiert, naja steck noch am Anfang, will aber damit die Karte aufdecken.
Ich find im Internet keine verständliche Erklärung, wie ich das nutze :pale:
grüße,susi

blablab 4. Mär 2010 14:51

Re: stringgrid benutzen
 
OnSelectCell wird aufgerufen wenn jemand auf eine Zelle der StringGrid-Komponente klickt.

procedure StringGrid1SelectCell(Sender: TObject; ACol,ARow: Integer; var CanSelect: Boolean);

ACol Spaltennummer
ARow Zeilennummer
canselect True Du erlaubst es die Zelle zu selektieren
canselect False Du verweigerst es die Zelle zu selektieren -> Die Zelle wird nicht selektiert.

funkuchn 4. Mär 2010 14:52

Re: stringgrid benutzen
 
ja okay, und wie nutze ich das, was du geschrieben hast nun? :shock:

blablab 4. Mär 2010 15:02

Re: stringgrid benutzen
 
Delphi-Quellcode:
procedure StringGrid1SelectCell(Sender: TObject; ACol,ARow: Integer; var CanSelect: Boolean);
begin
   KarteAufdecken(ACol, ARow);
end;

funkuchn 4. Mär 2010 15:07

Re: stringgrid benutzen
 
ja ok, thx
aber guck mal, das is mein code für verdeckte karten
Delphi-Quellcode:
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
begin
   if KartenArray[aCol, arow]=0 then
   Stringgrid1.Canvas.Draw(rect.left,rect.top,KarteVerdeckt);
end;

procedure TForm1.FormCreate(Sender: TObject);
var i,j:integer;
begin
    for i:=0 to 2 do
     for j:=0 to 2 do
       KartenArray[i,j]:=0;

    KarteVerdeckt:=tbitmap.create;
    KarteVerdeckt.LoadFromFile(extractfilepath(application.exename)+'clip_image002.bmp');

end;
und das onselectcell jetzt so ähnlich??

blablab 4. Mär 2010 16:12

Re: stringgrid benutzen
 
Also als erstes würde ich ein DrawGrid nehmen satt ein Stringgrid, da du anscheinend eh keine Strings benutzt.

Wenn dus ganz simpel machen willst:

Delphi-Quellcode:
procedure TForm1.DrawGrid1SelectCell(Sender: TObject; ACol, ARow: Integer;
   var CanSelect: Boolean);
var rect: TRect;
begin
   rect := DrawGrid1.CellRect(ACol, ARow);
   DrawGrid1.Canvas.Draw(rect.left, rect.top, KarteAufgedeckt[ACol, ARow]);
   Sleep(1000); //1000ms warten. In der Zeit kann der Benutzer nichts machen!
   DrawGrid1.Canvas.Draw(rect.left, rect.top, KarteVerdeckt);
end;
[edit]
Mir fällt grad auf, dass man beim Memory ja noch ne 2. Karte gleichzeitig aufdecken kann :)
Du musst den Code also entsprechend anpassen...

funkuchn 9. Mär 2010 13:57

Re: stringgrid benutzen
 
oki, hab ich jetzt eingebaut,
öhm...jetzt sagt der, Klasse besitzt keine Standardeigenschaft (
Delphi-Quellcode:
DrawGrid1.Canvas.Draw(rect.left, rect.top, KarteAufgedeckt[ACol, ARow]);
)
???

DP-Maintenance 9. Mär 2010 13:58

DP-Maintenance
 
Dieses Thema wurde von "Matze" von "Programmieren allgemein" nach "VCL / WinForms / Controls" verschoben.
TStringGrid/TDrawGrid -> VCL

DeddyH 9. Mär 2010 14:22

Re: stringgrid benutzen
 
Wie sieht der ganze Code denn aus?


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:49 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz