AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Paraformat setzen geht mal, und mal nicht...

Ein Thema von TheMiller · begonnen am 29. Jun 2009 · letzter Beitrag vom 29. Jun 2009
Antwort Antwort
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, 11: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
Benutzerbild von Lannes
Lannes

Registriert seit: 30. Jan 2005
Ort: Münster
745 Beiträge
 
Delphi 3 Professional
 
#2

Re: Paraformat setzen geht mal, und mal nicht...

  Alt 29. Jun 2009, 12:32
Hallo,

hast Du es schon mal in OnShow getestet?
MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
  Mit Zitat antworten Zitat
Benutzerbild von TheMiller
TheMiller

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

Re: Paraformat setzen geht mal, und mal nicht...

  Alt 29. Jun 2009, 12:35
Hab ich grad gemacht - gleicher Fehler...
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#4

Re: Paraformat setzen geht mal, und mal nicht...

  Alt 29. Jun 2009, 12:59
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?
Thomas
  Mit Zitat antworten Zitat
Benutzerbild von TheMiller
TheMiller

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

Re: Paraformat setzen geht mal, und mal nicht...

  Alt 29. Jun 2009, 13:27
Das mit der Fehlermeldung schaut so aus. Ich habe in die o.g Funktion noch ein "ShowMessage" eingebaut:

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 ));
  ShowMessage(SysErrorMessage(GetLastError)); // <---------- Hier
end; { SetTabstops }
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?
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:23 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz