AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

TMS String Grid mit Button in einer Spalte

Ein Thema von DerDan · begonnen am 2. Okt 2017 · letzter Beitrag vom 2. Okt 2017
Antwort Antwort
DerDan

Registriert seit: 15. Nov 2004
Ort: Donaueschingen
251 Beiträge
 
Delphi XE3 Professional
 
#1

TMS String Grid mit Button in einer Spalte

  Alt 2. Okt 2017, 12:33
Delphi-Version: 10 Berlin
Hallo,

ich schaffe es nicht die TMS String Grid Komponente so zu verwenden, dass
1) in einer Spalte Buttons erscheinen, das kann man mit AdvStringGrid1.AddButton zwar erreichen aber:
2) die Buttons dann auch gleich den Fokus haben, wenn man die Zelle mit den Cursor Tasten selektiert.

Es wird immer zunächst die Zelle "hinter" dem Button selektiert. Ein Drücken der Leertaste betätigt den Taster nicht. Dies geht wohl nur mit der Maus

Miniaturansicht angehängter Grafiken
2017-10-02_12h29_47.png  
nichts ist so schön wie man es sich vorstellt
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.275 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: TMS String Grid mit Button in einer Spalte

  Alt 2. Okt 2017, 13:19
Hallo,
kann ich nicht nachvollziehen.

Delphi-Quellcode:
type
  TForm115 = class(TForm)
    SG: TAdvStringGrid;
    procedure FormCreate(Sender: TObject);
    procedure SGButtonClick(Sender: TObject; ACol, ARow: Integer);
    procedure SGCanEditCell(Sender: TObject; ARow, ACol: Integer;
      var CanEdit: Boolean);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form115: TForm115;

procedure TForm115.FormCreate(Sender: TObject);
begin
  SG.AddButton(1,1,40,20,'1,1',haCenter,vaCenter);
end;

procedure TForm115.SGButtonClick(Sender: TObject; ACol, ARow: Integer);
begin
  MessageBox(0,'','',0);
end;

procedure TForm115.SGCanEditCell(Sender: TObject; ARow, ACol: Integer;
  var CanEdit: Boolean);
begin
  CanEdit := True;
end;
Wenn ich in die Zelle mit der Tastatur gehe, wird per Leertaste SGButtonClick aufgerufen.
Setz doch mal einen Breakpoint auf CanEditCell und gehe in die TMS-Quellen rein.

Die ButtonClick-Methode wird in WMKeyDown aufgerufen (unit AdvGrid)
Heiko

Geändert von hoika ( 2. Okt 2017 um 13:21 Uhr)
  Mit Zitat antworten Zitat
DerDan

Registriert seit: 15. Nov 2004
Ort: Donaueschingen
251 Beiträge
 
Delphi XE3 Professional
 
#3

AW: TMS String Grid mit Button in einer Spalte

  Alt 2. Okt 2017, 14:06
Okay,

stimmt, der Event Handler wird aufgerufen. Alledings fehlt das optische Feedback das der Taster quasi mechanisch hineingedrückt wird, wie das bei anderen Button der Fall ist.
Drücke ich mit der Maus, dann geht das ..
nichts ist so schön wie man es sich vorstellt
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.275 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: TMS String Grid mit Button in einer Spalte

  Alt 2. Okt 2017, 14:41
Hallo,
hast du nicht die Quellen?

Delphi-Quellcode:
procedure TForm115.SGButtonClick(Sender: TObject; ACol, ARow: Integer);
begin
  SG.PushButton(ACol,ARow,True);

  MessageBox(0,'','',0);

  SG.PushButton(ACol,ARow,False);
end;
Heiko
  Mit Zitat antworten Zitat
DerDan

Registriert seit: 15. Nov 2004
Ort: Donaueschingen
251 Beiträge
 
Delphi XE3 Professional
 
#5

AW: TMS String Grid mit Button in einer Spalte

  Alt 2. Okt 2017, 19:45
Das ist besser als gar nichts.

Nachteile sind.
A) Die Reaktion (in deinem Beispiel die Anzeige der MessageBox) erfolgt schon beim drücken der Space Taste, bei jedem anderen Button erst beim loslasen.
B) Bei Betätigung der Maus wird die Animation zwei mal ausgelößt.

vielen Dank für deine Hinweise
nichts ist so schön wie man es sich vorstellt

Geändert von DerDan ( 2. Okt 2017 um 20:18 Uhr)
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.275 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: TMS String Grid mit Button in einer Spalte

  Alt 2. Okt 2017, 20:25
Hallo,

dann dreh es doch rum

Delphi-Quellcode:
SG.PushButton(ACol,ARow,True);
Sleep(x)
SG.PushButton(ACol,ARow,False);
MessageBox(0,'','',0);
Beim Mausklick musst du improvisieren
Heiko
  Mit Zitat antworten Zitat
Antwort Antwort


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 09:39 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