Nie wiem jak uzyc EM_SETCHARFORMAT.....

0

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

0

A masz w uses moduł Messages?

0

Mam w uses moduł Messages.

0

Hmm, a może pokaż jak próbujesz używac tych poleceń - konkretny kod.

0

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.

0

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.

0

Dziekuje Ci bardzo wszystko jest ok

1 użytkowników online, w tym zalogowanych: 0, gości: 1