Mam problem z uzyciem EM_SETCHARFORMAT,SCF_SELECTION oraz z CFM_OFFSET. Dalphi moj nie poznaje tych polecen. Nie wiem dlaczego, prosze o rade. Pozdrawiam. Mam Delphi 6.0 Personal
A masz w uses moduł Messages?
Mam w uses moduł Messages.
Hmm, a może pokaż jak próbujesz używac tych poleceń - konkretny kod.
oto kod
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls,
Forms,Dialogs, StdCtrls, ComCtrls, ShellApi;
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
procedure RE_SetCharFormat(RichEdit1: TRichEdit;
CharacterFormat: TCharacterFormat);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.RE_SetCharFormat(RichEdit1: TRichEdit; CharacterFormat: TCharacterFormat);
var
Format: TCharFormat;
begin
with Format do
begin
cbSize := SizeOf(Format);
dwMask := CFM_OFFSET;
case CharacterFormat of
CFM_Superscript: yOffset := 60;
CFM_Subscript: yOffset := -60;
CFM_Normal: yOffset := 0;
end;
end;
Richedit1.Perform(EM_SETCHARFORMAT, SCF_SELECTION, Longint(@Format));
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
RE_SetCharFormat(RichEdit1, CFM_Superscript);
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
RE_SetCharFormat(RichEdit1, CFM_Subscript);
end;
end.
Hmm, nie do końca wiem co powyższy kod ma wykonywać (tylko sie domyślam) ale po kilku poprawkach kompiluje sie bez zastrzeżeń :-) .
uses
//....
RichEdit;
//....
procedure TForm1.RE_SetCharFormat(RichEdit1: TRichEdit; CharacterFormat: Longint);
var
Format: TCharFormat;
begin
with Format do
begin
cbSize := SizeOf(Format);
dwMask := CFM_OFFSET;
case CharacterFormat of
CFE_Superscript: yOffset := 60; //żeby działało dajesz nie CFM a CFE
CFE_SUBSCRIPT: yOffset := -60; //j.w.
//CFM_Normal: yOffset := 0; //taka wartośc nie istnieje w żadnej biblitece w Delphi7 [???]
end;
end;
Richedit1.Perform(EM_SETCHARFORMAT, SCF_SELECTION, Longint(@Format));
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
RE_SetCharFormat(RichEdit1, CFE_Superscript);
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
RE_SetCharFormat(RichEdit1, CFE_Subscript);
end;
Powyższy kod działał mi na Delphi7. Jeżeli chcesz moge ci podesłać RichEdit.pas, bo w Personal chyba go nie ma.
Dziekuje Ci bardzo wszystko jest ok