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/)
-   -   Delphi Problem mit onSelectCell-Eigenschaft beim stringgrid (https://www.delphipraxis.net/78471-problem-mit-onselectcell-eigenschaft-beim-stringgrid.html)

Ayumi 5. Okt 2006 14:38


Problem mit onSelectCell-Eigenschaft beim stringgrid
 
Hallo,

Wenn der Anwender auf die Spalte 0 des StringGrids klickt, soll die ganze Zeile markiert werden.

Jetzt habe ich folgendes Problem: Wenn der Anwender irgendwo ins stringgrid klickt und danach in die Spalte 0, reagiert mein Programm nicht. Erst beim zweiten Klick auf die Spalte 0 wird die ganze zeile markiert. Wenn der Anwender gleich danach in einer anderen Zeile in spalte 0 klickt, wird die ganze Zeile sofort markiert. Sobald der Anwender aber wieder irgendwo anders ins Stringgrid klickt und danach in Zeile 0, tritt das Problem wieder auf?

Hat dafür einer eine Erklärung?


Hier ist der Programm-Code:

Delphi-Quellcode:
procedure TForm1.GridSelectCell(  Sender   : TObject;
                                  ACol,
                                  ARow     : Integer;
                              var CanSelect : Boolean);
begin
if Grid.cells[1,1] = '' then
    exit
  else
    SelectRowInCol0(Acol,ARow,0);
end;


procedure TForm1.SelectRowInCol0(const ACol, ARow, titelzeile : integer);
begin
 if (ACol=0) and (ARow>titelzeile) then begin
  Grid.Options := Grid.Options + [goRowSelect];
  Grid.Options := Grid.Options + [goRangeSelect];
 end
 else begin
  Grid.Options:= Grid.Options - [goRowSelect];
  Grid.Options:= Grid.Options - [goRangeSelect];
 end;
end;

marabu 5. Okt 2006 17:20

Re: Problem mit onSelectCell-Eigenschaft beim stringgrid
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hi Filiz,

es liegt wahrscheinlich daran, dass du das falsche Ereignis verwendest:

Delphi-Quellcode:
procedure TDemoForm.StringGridMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
var
  iCol, iRow: Integer;
begin
  with Sender as TStringGrid do
  begin
    MouseToCell(X, Y, iCol, iRow);
    if iRow < FixedRows then
      Exit else
    if (iCol < FixedCols) or (iCol = 0) then
      Options := Options + [goRowSelect] else
    begin
      Options := Options - [goRowSelect];
      if iCol = Col then
        Selection := TGridRect(Rect(iCol, iRow, iCol, iRow));
      Col := iCol;
    end;
    Row := iRow;
  end;
end;
Grüße vom marabu


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:13 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-2025 by Thomas Breitkreuz