Autor |
Beitrag |
Stauch
      
Beiträge: 140
Win 2000, Win XP
D4
|
Verfasst: Fr 15.11.02 11:05
Gibt es eine (einfache) Variante Text in Tedit- oder TStringGrid- Elementen
rechtsbündig oder zentriert auszurichten.
Oder hat jemand einen Tip, in welche Richtung ich experimentieren könnte?
C.
_________________ Geht das? Und wenn ja, warum nicht?
|
|
Keldorn
      
Beiträge: 2266
Erhaltene Danke: 4
Vista
D6 Prof, D 2005 Pro, D2007 Pro, DelphiXE2 Pro
|
Verfasst: Fr 15.11.02 22:08
Hallo
in einem Tedit kann ich es dir nicht sagen, in einem Stringgrid geht dies sehr wohl, indem du im ONdrawCell-ereignis die Zelle selber zeichnest.
mit textout kannst du den text an einer bestimmten position ausgeben. Mit Textwidth kannst du die Textlänge bestimmen und mit ein wenig mathematik den text rechtsbündig ausgeben.
einfach ? es gibt schwierigere sachen
Mfg Frank
|
|
Tino
      

Beiträge: 9839
Erhaltene Danke: 45
Windows 8.1
Delphi XE4
|
Verfasst: So 17.11.02 18:00
Hallo,
die tEdit Komponente bietet Dir leider nicht die Möglichkeit einen Text z. B. Rechtsbündig auszurichten!
Du kannst aber eine Abgeleitetekomponete von tEdit erstellen. Hier mal ein Beispiel:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22:
| type tRightEdit = Class (tEdit) Protected Procedure CreateParams (var Params: tCreateParams); override; End;
Procedure Register;
Implementation
Procedure Register; Begin RegisterComponents('Samples', [tRightEdit]); End;
Procedure tRightEdit.CreateParams (var Params: tCreateParams); Begin Inherited CreateParams (Params); Params.Style := Params.Style or ES_RIGHT; End; |
Gruß
TINO
Moderiert von Tino: Code- durch Delphi-Tags ersetzt.
Zuletzt bearbeitet von Tino am Mi 27.10.04 09:36, insgesamt 1-mal bearbeitet
|
|
Stauch 
      
Beiträge: 140
Win 2000, Win XP
D4
|
Verfasst: Mo 18.11.02 12:49
Bin am ausprobieren.
:)
Danke
C.
_________________ Geht das? Und wenn ja, warum nicht?
|
|
Stauch 
      
Beiträge: 140
Win 2000, Win XP
D4
|
Verfasst: Mo 18.11.02 13:26
Wahrscheinlich eine ziemlich blöde Frage aber was solls :oops:
Wie löse ich das OnDrawCell Ereignis aus???
C.
_________________ Geht das? Und wenn ja, warum nicht?
|
|
Keldorn
      
Beiträge: 2266
Erhaltene Danke: 4
Vista
D6 Prof, D 2005 Pro, D2007 Pro, DelphiXE2 Pro
|
Verfasst: Mo 18.11.02 13:44
drück mal f1 ! und lies dir erstmal durch was bei ondrawcell steht.
Mfg Frank
_________________ Lükes Grundlage der Programmierung: Es wird nicht funktionieren.
(Murphy)
|
|
Stauch 
      
Beiträge: 140
Win 2000, Win XP
D4
|
Verfasst: Mo 18.11.02 13:50
Danke für den Hinweis :?
Aber das hatte ich bereits und das Fragezeichen über meinem Haupt ist davon nicht kleiner geworden
C.
_________________ Geht das? Und wenn ja, warum nicht?
|
|
Keldorn
      
Beiträge: 2266
Erhaltene Danke: 4
Vista
D6 Prof, D 2005 Pro, D2007 Pro, DelphiXE2 Pro
|
Verfasst: Mo 18.11.02 14:07
das ereignis wird ausgelöst, wenn eine Zelle neu gezeichnet werden muß.
du willst ja drauf reagieren und es nicht unbedingt auslösen.
mit Stringrid.repaint zeichnest du das grid neu, damit wird für jede Zelle auch einzeln das ondrawcell - ereignis ausgelöst.
Beispiel für ondrawcell:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20:
| procedure TForm1.Stringgrid1DrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState); var s:string; begin with (sender as Tstringgrid) do begin if (arow mod 2) = 0 then canvas.brush.color:=clblue else canvas.brush.color:=clwhite; if gdfixed in state then canvas.brush.color:=fixedcolor; canvas.fillrect(rect);
s:=cells[acol,arow]; if (acol mod 2) = 0 then canvas.textrect(rect,rect.Right-canvas.textwidth(s)-2,rect.top+2,s) else canvas.textout(rect.left+2,rect.top+2,s); end; end; |
mfg Frank
Moderiert von Tino: Code- durch Delphi-Tags ersetzt.
_________________ Lükes Grundlage der Programmierung: Es wird nicht funktionieren.
(Murphy)
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Mo 18.11.02 14:09
|
|
Stauch 
      
Beiträge: 140
Win 2000, Win XP
D4
|
Verfasst: Mo 18.11.02 14:47
Danke, daß hilft mir weiter.
Keldorn hat folgendes geschrieben: | das ereignis wird ausgelöst, wenn eine Zelle neu gezeichnet werden muß.
du willst ja drauf reagieren und es nicht unbedingt auslösen.
mit Stringrid.repaint zeichnest du das grid neu, damit wird für jede Zelle auch einzeln das ondrawcell - ereignis ausgelöst. |
Doch doch, ich wollte es schon auslösen, die DrawCell-Procedure habe ich ja teilweise schon lauffähig, aber ich wußte halt nicht, wie sie gestartet werden kann.
Nochmal Danke an alle
C. 
_________________ Geht das? Und wenn ja, warum nicht?
|
|
cwille
      
Beiträge: 39
xp,win2003-server,linux
D7 Enterprise
|
Verfasst: Mi 27.10.04 13:43
Hallo Tino,
wie und unter welchem Ereignis muß ich die Methode CreateParams aufrufen.
Ist es nicht so das RecreateWnd und createWnd CreateParams aufrufen.
Mit nachfolgender Anweisung habe ich mal rumprobiert. Hat aber leider nicht funktioniert.
procedure TFrmAuszErf.TxtBetragKeyPress(Sender: TObject; var Key: Char);
var Alignm :tRightEdit;
alignment : TAlignment;
begin
if (key = #13) OR (key =#9) Then
Begin
alignment:=taRightJustify;
?????
End;
Danke und Gruß
Carsten
Tino hat folgendes geschrieben: | Hallo,
die tEdit Komponente bietet Dir leider nicht die Möglichkeit einen Text z. B. Rechtsbündig auszurichten!
Du kannst aber eine Abgeleitetekomponete von tEdit erstellen. Hier mal ein Beispiel:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22:
| type tRightEdit = Class (tEdit) Protected Procedure CreateParams (var Params: tCreateParams); override; End;
Procedure Register;
Implementation
Procedure Register; Begin RegisterComponents('Samples', [tRightEdit]); End;
Procedure tRightEdit.CreateParams (var Params: tCreateParams); Begin Inherited CreateParams (Params); Params.Style := Params.Style or ES_RIGHT; End; |
Gruß
TINO
Moderiert von Tino: Code- durch Delphi-Tags ersetzt. |
|
|