AGB  ·  Datenschutz  ·  Impressum  







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

rechtsbündige Eingabe im Stringgrid

Ein Thema von Hansa · begonnen am 3. Feb 2005 · letzter Beitrag vom 4. Feb 2005
Antwort Antwort
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#1

rechtsbündige Eingabe im Stringgrid

  Alt 3. Feb 2005, 20:57
Hi,

ich habe ein Stringgrid und die Zahlenzellen sollen da rechtsbündig mit abschließenden Nullen usw. angezeigt werden. Das geht auch. Aber folgendes ist mir noch nicht gelungen : direkt bei der Eingabe eine rechtsbündige Darstellung zu erreichen.

Geht das relativ einfach, oder wird es kompliziert ? Dann bleibt nämlich alles wie gehabt.

Momentan steht im OnDrawCell folgendes :

DrawText(sg.Canvas.Handle, PChar(st), StrLen(PChar(st)),Rect,DT_RIGHT); Im Endeffekt steht alles wie gewollt in den Zellen, aber eben noch nicht bei der Eingabe.
Gruß
Hansa
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#2

Re: rechtsbündige Eingabe im Stringgrid

  Alt 4. Feb 2005, 16:27
Zitat von Hansa:
Hi,

ich habe ein Stringgrid und die Zahlenzellen sollen da rechtsbündig mit abschließenden Nullen usw. angezeigt werden. Das geht auch. Aber folgendes ist mir noch nicht gelungen : direkt bei der Eingabe eine rechtsbündige Darstellung zu erreichen.

Geht das relativ einfach, oder wird es kompliziert ? Dann bleibt nämlich alles wie gehabt.
Könnte kompliziert werden.
Du brauchst zunächst mal Zugriff auf TStringGrid.InplaceEditor.
Da dieses Property protected ist muss man tricksen:
Delphi-Quellcode:
type
   TSG = class(TStringGrid)
   end;

// ein Beispiel, wie man mit einem Timer den Inhalt des Editors verändern kann
procedure TForm1.Timer1Timer(Sender: TObject);
var
   sg : TSG;
begin
   sg := TSG(StringGrid1);
   if Assigned(sg.InplaceEditor) then
      sg.InplaceEditor.Text := 'Dummerle';
end;
Wenn du nun dem Editor eine WindowsMessage schickst,
dass er sich rechtsbündig anzeigen soll...
Andreas
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#3

Re: rechtsbündige Eingabe im Stringgrid

  Alt 4. Feb 2005, 18:57
Ich habe mal kurzerhand eine Komponente draus gemacht :

Delphi-Quellcode:
unit sgExt;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Grids;

procedure Register;

type
  TsgExt = class(TStringGrid)
  private
    { Private-Deklarationen }
    FAlignment: TAlignment;
    procedure SetAlignment(Value: TAlignment);
  published
    { Public-Deklarationen }
    property Alignment: TAlignment read FAlignment write SetAlignment;
  end;

implementation

// {$R *.dfm}

procedure TsgExt.SetAlignment (Value: TAlignment);
begin
  FAlignment := Value;
  RecreateWnd;
end;

procedure Register;
begin
  RegisterComponents('Eigene', [TsgExt]);
end;

end.
Zum testen dient vorerst das hier :

Delphi-Quellcode:
procedure TForm1.sgExt1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
begin
  if sgExt1.Alignment = taRightJustify then
  showmessage ('12345');
end;
Ich habe das Alignment umgestellt und lande auch an dieser Stelle. Die Frage ist nun, wie es weiter geht. Die ShowMessage kommt schon mal und die Frage ist, wie es auszuwerten ist.
Gruß
Hansa
  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 20: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