Einzelnen Beitrag anzeigen

Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.344 Beiträge
 
Delphi XE2 Professional
 
#5

AW: StringGrid Zellentext auf 50 Bytes begrenzen

  Alt 7. Mär 2025, 11:24
Hallo und Danke für die Antworten.

Hab es nun wie folgt gelöst:
Delphi-Quellcode:
procedure TMainForm.StringGrid_InfoTextSetEditText(Sender: TObject; ACol,
  ARow: Integer; const Value: string);
const
  max_Bytes = 50;

var
  Encoding: TEncoding;
  Bytes: TArray<Byte>;
  len_Bytes: Integer;
  max_Chars: Integer;

begin
  max_Chars := 50;

  If ARow > 0 then
    begin
      //3. Spalte
      If ACol in [2] then
        begin
          Encoding := TEncoding.UTF8;
          Bytes := Encoding.GetBytes(Value);
          len_Bytes := length(Bytes);

          If len_Bytes > max_Bytes then
            begin
              max_Chars := length(Value);
              THackedStringGrid(Sender).Selection := TGridRect(Rect(-1,-1,-1,-1));
              THackedStringGrid(Sender).Cells[ACol, ARow] := copy(Value, 1, max_Chars - 1);
            end;

          //Eingabe begrenzen
          SendMessage(THackedStringGrid(Sender).InplaceEditor.Handle, EM_SETLIMITTEXT, max_Chars, 0);
        end;
    end;
end;
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
  Mit Zitat antworten Zitat