Hallo,
ich kenne mich mittlerweile recht gut mit dem Paraformat aus. Nun habe ich im Forum eine Funktion zum Setzen von Tabstop-Positionen via Paraformat gesehen. Die Inbuild-RichEdit-Variante sei wohl verbuggt.
Nun habe ich 17 Richedits in meiner Anwendung (ja, das muss und soll so sein), bei denen ich gerne die Tabstop-Positionen festlegen will (im OnCreate v. Form1).
Nun gehe ich alle 17 durch und es funktioniert wunderbar - außer bei den letzten beiden RichEdits.
Nun habe ich mir mal die Fehlermeldung (SysErrorMessage) ausgeben lassen und da sagt er mir, das
Handle sei ungültig.
Hier mal der Quelltext dazu:
Delphi-Quellcode:
procedure SetTabstops( re: TRichedit; TabPositions: array of single );
var
pf: TParaFormat;
i : Integer;
begin
Assert( Assigned( re ), 'SetTabstops: re cannot be nil' );
FillChar( pf, sizeof(pf), 0);
pf.cbSize := Sizeof( pf );
pf.dwmask := PFM_TABSTOPS;
if High(TabPositions) >= MAX_TAB_STOPS then
pf.cTabCount := MAX_TAB_STOPS
else
pf.cTabCount := High(TabPositions)+1;
For i:= 0 To pf.cTabCount-1 Do
pf.rgxTabs[i] := Trunc(TabPositions[i] * 1440);
re.perform( EM_SETPARAFORMAT, 0, lParam( @pf ));
end; { SetTabstops } //Diese Fkt. habe ich gefunden - sie funktioniert auch soweit
procedure TForm1.FormCreate(Sender: TObject);
begin
// Einer von 17 Aufrufen. Alle mit den gleichen Daten, nur reX unterscheidet sich
SetTabstops(reKommentar, [0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0]);
end;
Ich hoffe, ihr könnt mit helfen.
Danke!