Autor Beitrag
Bertigo
Hält's aus hier
Beiträge: 3



BeitragVerfasst: Fr 25.12.09 17:24 
Hallo,
gibt es eine Möglichkeit den InplaceEditor bei jeder Eingabe in eine Stringgrid-Zelle zu zentrieren?
Und warum klappt das nicht in der Form (also ein eigenes Stringgrid Objekt ableiten und die unten stehende Funktion überschreiben):


ausblenden Delphi-Quelltext
1:
function  CreateEditor: TInplaceEdit; override;					


ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
function TEigenesStringgrid.CreateEditor;
var CustomInplace: TInplaceEdit;
begin
 CustomInplace := TInplaceEdit.Create(self);
 CustomInplace.Left := 15;
 Result := CustomInplace;
end;


Cosslink zu Delphi-Praxis
Reinhard Kern
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 591
Erhaltene Danke: 14



BeitragVerfasst: Sa 26.12.09 16:48 
user profile iconBertigo hat folgendes geschrieben Zum zitierten Posting springen:
Hallo,
gibt es eine Möglichkeit den InplaceEditor bei jeder Eingabe in eine Stringgrid-Zelle zu zentrieren?
...


Hallo,

wenn schon, dann verwende ich gleich einen eigenen Editor, da kann ich dann die Eingabe beinflussen wie ich will - ich hole mir die Abmessungen der Grid Zelle und lasse dort ein TMaskEdit oder eine eigenes Edit-Control anzeigen, sozusagen fliegend über dem TStringGrid.

Gruss Reinhard
Bertigo Threadstarter
Hält's aus hier
Beiträge: 3



BeitragVerfasst: Sa 26.12.09 18:18 
Hi, danke für die Antwort! Dein Vorschlag wäre natürlich eine gute Möglichkeit, hättest du vielleicht einen Ansatz, wie man das ganze verwirklichen könnte?
Bertigo Threadstarter
Hält's aus hier
Beiträge: 3



BeitragVerfasst: So 27.12.09 20:09 
So ich habe es jetzt endlich gelöst hier meine Lösung: :zwinker:


ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
unit Unit3;

interface

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

type
  TExtInplaceEdit = class(TInplaceEdit)
  protected
    procedure CreateParams(var Params: TCreateParams); override;
  end;

  TExtStringGrid = class(TStringGrid)
  protected
    function CreateEditor: TInplaceEdit; override;
  public
    constructor Create(AOwner: TComponent); override;
    procedure DrawCell(ACol, ARow: Longint; ARect: TRect; AState: TGridDrawState); override;
  end;


implementation


{ TExtInplaceEdit }
procedure TExtInplaceEdit.CreateParams(var Params: TCreateParams);
begin
  inherited;
  Params.Style := Params.Style or LongWord(ES_Center); //Text des InplceEditors zentriert darstellen
end;

{ TExtStringGrid }
constructor TExtStringGrid.Create(AOwner: TComponent);
begin
  inherited;
  Parent := AOwner as TWinControl;
  DefaultColWidth := 75;
  DefaultRowHeight := 20;
  FixedCols   := 0;
  FixedRows   := 0;
  ColCount    := 2;
  RowCount    := 4;
  Width := 160;
  Height :=90;
  Options := Options + [goEditing];
  Selection := TGridRect(Rect(-1,-1,-1,-1));
end;

function TExtStringGrid.CreateEditor: TInplaceEdit;
begin
  Result := TExtInplaceEdit.Create(Self);
end;

procedure TExtStringGrid.DrawCell(ACol, ARow: Longint; ARect: TRect; AState: TGridDrawState);
var s: string;
begin
  s := Cells[ACol, ARow];
   //Text im Stringgrid zentriert darstellen
  DrawText(Canvas.Handle, PChar(s), Length(s), ARect, DT_SINGLELINE or DT_Center or DT_VCENTER);
end;

end.