AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

TStringGrid -[goRowSelect] wird nicht visualisiert

Ein Thema von hoika · begonnen am 26. Jun 2015 · letzter Beitrag vom 29. Jun 2015
Antwort Antwort
Seite 2 von 2     12
Benutzerbild von Captnemo
Captnemo

Registriert seit: 27. Jan 2003
Ort: Bodenwerder
1.126 Beiträge
 
Delphi XE4 Architect
 
#11

AW: TStringGrid -[goRowSelect] wird nicht visualisiert

  Alt 29. Jun 2015, 13:00
Okay, das so nicht ganz korrekt.
col:= selectiert die Column wohl nur, wenn diese nicht bereits selectiert ist (was aber bei der Option goRowSelect bereit der fall ist).
Das Problem ist ja nicht das Selektieren einer Zelle, das funktioniert, sondern, dass die bisher selektierten Zellen nicht automatisch deselektiert werden (bzw. dieses Deselektieren in der Bildschirmdarstellung nicht erkennbar ist), wenn goRowSelect ausgeschaltet wird.
Dann probier das doch mal aus.
Denn
Delphi-Quellcode:
  strngrd1.Options:=strngrd1.Options-[goRowSelect];
  strngrd1.Col:=1;
führt dazu, das nach wie vor alle Zellen der Zeile selektiert sind. Lediglich die Darstellung verändert sich ein wenig. Während bei einem goRowSelect alle Zellen mit 1 gemeinsamen Rahmen versehen sind, nach diesen beiden Zeilen alle Zellen mit einem eigenen Rahmen versehen. Sind aber noch alle markiert.

Kommt zwar am Ende das gleich bei raus, aber man muss nicht jeder Zelle der Zeile rückwärts selektieren.
Ich gehe davon aus, dass du das nicht ausprobiert hast, sonst hättest du gesehen, dass das nicht der Fall ist. Das "rückwärts selektieren" macht man ja nicht, damit die Zellen der Reihe nach selektiert werden, sondern damit sie der Reihe nach ERKENNBAR deselektiert werden, wenn die nächste Zelle (links davon) selektiert wird.
Ich habe das sehr wohl ausprobiert. Aber von einem "ERKENNBAREM" delektieren ist im Ausgangspost vom TE nicht die Rede. Ihm ging es darum, dass wenn man im Code goRowSelect wieder aus den Optionen entfernt, nicht automatisch nur noch eine Zelle markiert ist, auch nicht, wenn man der Eigenschaft Col eine neuen Wert zuweist.

Hier, mach dir mal ne Form mit einen StringGrid und 4 Buttons und probier das mal aus.
Delphi-Quellcode:
unit Unit1;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.Grids;

type
  TForm1 = class(TForm)
    strngrd1: TStringGrid;
    btn1: TButton;
    btn2: TButton;
    btn3: TButton;
    btn4: TButton;
    procedure btn4Click(Sender: TObject);
    procedure btn1Click(Sender: TObject);
    procedure btn2Click(Sender: TObject);
    procedure btn3Click(Sender: TObject);
    procedure FormShow(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.btn1Click(Sender: TObject);
begin
  strngrd1.Options:=strngrd1.Options-[goRowSelect];
  strngrd1.Col:=1;
end;

procedure TForm1.btn2Click(Sender: TObject);
begin
  strngrd1.Options:=strngrd1.Options-[goRowSelect];
  strngrd1.Col:=2;
end;

procedure TForm1.btn3Click(Sender: TObject);
begin
  strngrd1.Options:=strngrd1.Options-[goRowSelect];
  strngrd1.Col:=3;
  strngrd1.Selection:=TGridRect(Rect(strngrd1.FixedCols,strngrd1.Row,strngrd1.FixedCols,strngrd1.Row));

end;

procedure TForm1.btn4Click(Sender: TObject);
begin
  strngrd1.Options:=strngrd1.Options+[goRowSelect];
end;

procedure TForm1.FormShow(Sender: TObject);
begin
  btn4Click(self);
end;

end.
Du wirst feststellen, dass beim Klick auf btn1 außer der visuellen Veränderung, wie ich oben geschrieben habe, nicht viel passiert. Auch nicht, wenn man noch mal drauf klickt. Erst wenn man danach mal auf btn2 klickt, wird tatsächlich die 2 Zelle auch selektiert.
Wohingegen ein klick auf btn3 immer funktioniert.
btn4 selektiert dann wieder die ganze Zeile.

PS: Die visuelle Veränderung, die ich oben erwähne, kann aber bei einer anderen OS- oder Delphiversion möglichweise sich anders darstellen.
Dieter
9 von 10 Stimmen in meinem Kopf sagen ich bin nicht verrückt. Die 10. summt dazu die Melodie von Supermario Bros.
MfG Captnemo
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:09 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz