Einzelnen Beitrag anzeigen

Benutzerbild von TheMiller
TheMiller

Registriert seit: 19. Mai 2003
Ort: Gründau
2.480 Beiträge
 
Delphi XE7 Architect
 
#1

Paraformat setzen geht mal, und mal nicht...

  Alt 29. Jun 2009, 12:44
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!
  Mit Zitat antworten Zitat