![]() |
Paraformat setzen geht mal, und mal nicht...
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:
Ich hoffe, ihr könnt mit helfen.
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; Danke! |
Re: Paraformat setzen geht mal, und mal nicht...
Hallo,
hast Du es schon mal in OnShow getestet? |
Re: Paraformat setzen geht mal, und mal nicht...
Hab ich grad gemacht - gleicher Fehler...
|
Re: Paraformat setzen geht mal, und mal nicht...
Hallo
Selbst mit 30 TRichEdits erhalte ich unter D5 keine Fehlermeldung. Erhältst du die Fehlermeldung auch dann, wenn auf der Form nur die RichEdits sind? |
Re: Paraformat setzen geht mal, und mal nicht...
Das mit der Fehlermeldung schaut so aus. Ich habe in die o.g Funktion noch ein "ShowMessage" eingebaut:
Delphi-Quellcode:
Doch ich habe rausgefunden, dass das Verhalten u.a auch mit der Eigenschaft ScrollBars (ssVertical) der RichEdits zusammenhängt. Wenn ich diese Eigenschaft auf ssNone stelle, geht es manchmal. Was ist da los?
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 )); ShowMessage(SysErrorMessage(GetLastError)); // <---------- Hier end; { SetTabstops } |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:47 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz