Go to English page

ViaThinkSoft CodeLib

Dieser Artikel befindet sich in der Kategorie:
CodeLibProgrammierhilfenDelphi

Borland sieht es in der Komponente TValueListEditor nicht vor, den Textcursor zu beeinflussen.

Um einen Text zu beeinflussen, muss die Eigenschaft "InplaceEditor" durch eine Ableitung in den öffentlich sichtbaren Bereich verschoben werden.

Hier ist eine kleine Erweiterung des TValueListEditor:

unit ExtendedValEdit;

// by ViaThinkSoft
// http://devboard.viathinksoft.de/viewtopic.php?f=34&t=778

interface

uses
  ValEdit;

type
   TExtendedValueListEditor = class(TValueListEditor)
   public
     property InplaceEditor;
     procedure TextCursorToBeginning;
     procedure TextCursorToEnd;
     procedure TextCursorSelectAll;
     procedure TextCursorToPosition(Pos: integer);
     procedure SelCell(ACol, ARow: integer; ASelectText: boolean);
     procedure ClearValues;
   end;

implementation

procedure TExtendedValueListEditor.TextCursorToBeginning;
begin
  if Assigned(InplaceEditor) then
  begin
    InplaceEditor.SelStart := 0;
  end;
end;

procedure TExtendedValueListEditor.TextCursorToEnd;
begin
  if Assigned(InplaceEditor) then
  begin
    InplaceEditor.SelStart := InplaceEditor.GetTextLen - 0;
  end;
end;

procedure TExtendedValueListEditor.TextCursorToPosition(Pos: integer);
begin
  if Assigned(InplaceEditor) then
  begin
    InplaceEditor.SelStart := Pos;
  end;
end;

procedure TExtendedValueListEditor.TextCursorSelectAll;
begin
  if Assigned(InplaceEditor) then
  begin
    InplaceEditor.SelectAll;
  end;
end;

procedure TExtendedValueListEditor.SelCell(ACol, ARow: integer; ASelectText: boolean);
begin
  Col := ACol;
  Row := ARow;

  SetFocus;

  // Workaround: http://devboard.viathinksoft.de/viewtopic.php?f=34&t=779
  Refresh;

  if not ASelectText then TextCursorToEnd; { else TextCursorSelectAll; }
end;

procedure TExtendedValueListEditor.ClearValues;
var
  i: integer;
begin
  for i := 1 to RowCount - 1 do
  begin
    Cells[1, i] := '';
  end;
end;

end.
Daniel Marschall
ViaThinkSoft Mitbegründer