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 Stringrid Selektion eines Feldes wegnehmen (https://www.delphipraxis.net/124863-stringrid-selektion-eines-feldes-wegnehmen.html)

DelphiManiac 26. Nov 2008 14:04


Stringrid Selektion eines Feldes wegnehmen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,

ich habe jetzt das Problem, dass ich bei der Zuweisung auf dem Textfeld eine Selektion des Wertes habe (siehe Screenshot).
Nach dem weiteren eingeben wird der vorherige Werte gelöscht, durch die Selektion.

Wie kann ich denn die Selektion wegnehmen?

Delphi-Quellcode:
procedure TMainGUI.JvStringGrid2SetEditText(Sender: TObject; ACol,
  ARow: Integer; const Value: string);
begin
  // Begrenzung des Wertes auf 16 Zeichen
  if ((length(Value) > 16) and (ACol = 1)) then
  begin
    JvStringGrid2.Cells[ACol,ARow]:= Copy(Value,0,16);
    // Jetzt hat das Feld den Fokus und wenn man weiter was eingibt, wird der Wert gelöscht
  end;

end;

Danke euch!

toms 29. Nov 2008 21:45

Re: Stringrid Selektion eines Feldes wegnehmen
 
Hallo

Mit folgendem Code kannst du den Cursor in einer Zelle
(InplaceEditor) des TStringGrids positionieren.
Hierfür verwenden wir eine "Cracker" Klasse, da der InplaceEditor "protected" ist.


Delphi-Quellcode:
type
  TGridCracker = class(TStringGrid);
 
{...}

implementation

{...}

procedure SetCaretPosition(Grid: TStringGrid; Col, Row, X_Pos: Integer);
begin
  Grid.Col := Col;
  Grid.Row := Row;
  with TGridCracker(Grid) do
    InplaceEditor.SelStart := X_Pos;
end;

// Ermittelt die Caret-Position der aktuellen Zelle
function GetCaretPosition(Grid: TStringGrid): Integer;
begin
  with TGridCracker(Grid) do
    Result := InplaceEditor.SelStart;
end;

// Beispiel: Fokusiert die Zelle(1,3) und setzt den Cursor auf Position 5

procedure TForm1.Button1Click(Sender: TObject);
begin
  StringGrid1.SetFocus;
  SetCaretPosition(StringGrid1, 1, 3, 5);
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:43 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