Avatar billede armena Nybegynder
28. marts 2003 - 16:06 Der er 20 kommentarer og
1 løsning

Hævet og sænket skrift i RichEdit

Hvordan kan jeg ved at trykke på en knap skrive med Hævet skrift og ved at trykke på en anden knap skrive med Sænket skrift?
Altså hvis man nu skal skrive 156 cm2 (2 skal være hævet skrift)
Håber at i forstår :)

Need help.

MVH.
ALA
Avatar billede stoney Nybegynder
28. marts 2003 - 17:10 #1
kan du ikke bare bruge Ascii 178

Stoney
Avatar billede armena Nybegynder
28. marts 2003 - 18:28 #2
stoney> hmm? hvordan? og hvad er det?
Avatar billede stone Forsker
28. marts 2003 - 20:27 #3
Her er et lille eksempel:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, ComCtrls, Richedit;

type
TCharacterFormat = (CFM_Superscript, CFM_Subscript, CFM_Normal);

  TForm1 = class(TForm)
    RichEdit1: TRichEdit;
    Button1: TButton;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure RE_SetCharFormat(RichEdit: TRichEdit; CharacterFormat: TCharacterFormat);
var
  // The CHARFORMAT structure contains information about
  // character formatting in a rich edit control.
  Format: TCharFormat;
begin
  FillChar(Format, SizeOf(Format), 0);
  with Format do
  begin
    cbSize := SizeOf(Format);
    dwMask := CFM_OFFSET;
    // Character offset, in twips, from the baseline.
    // If the value of this member is positive,
    // the character is a superscript;
    // if it is negative, the character is a subscript.
    case CharacterFormat of
      CFM_Superscript: yOffset := 60;
      CFM_Subscript: yOffset := -60;
      CFM_Normal: yOffset := 0;
    end;
  end;
  // The EM_SETCHARFORMAT message sets character formatting in a rich edit control.
  // SCF_SELECTION: Applies the formatting to the current selection
  Richedit.Perform(EM_SETCHARFORMAT, SCF_SELECTION, Longint(@Format));
end;

// Examples:


// Apply Superscript to the current selection





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.
Avatar billede stoney Nybegynder
28. marts 2003 - 21:13 #4
Prøv at markere 1 karakter (i dit tilfælde et 2 tal)
i richedit og brug følgende kode

procedure TForm1.Button1Click(Sender: TObject);
begin
richedit1.SelText := chr(178);
end;

Stoney
Avatar billede armena Nybegynder
28. marts 2003 - 22:25 #5
stone> I det der eksempel, er det så det markerede der blive hævet/sænket?
Stoney> Jamen jeg vil gerne have at man selv kan marker det man vil have sænket eller hævet, ikke kun et 2 tal.
Avatar billede stone Forsker
28. marts 2003 - 22:42 #6
armena: ja du markerer det du vil have hævet/sænket
Avatar billede armena Nybegynder
29. marts 2003 - 12:33 #7
stone> jeg kan ikke få det til at virke.. får mange fejl meddelser:

[Error] Unit1.pas(33): Undeclared identifier: 'TCharFormat'
[Error] Unit1.pas(35): Illegal character in input file: ' ' ($A0)(mange af dem)
[Error] Unit1.pas(39): Undeclared identifier: 'CFM_OFFSET'
[Error] Unit1.pas(45): Undeclared identifier: 'yOffset'
[Error] Unit1.pas(52): Undeclared identifier: 'EM_SETCHARFORMAT'
[Error] Unit1.pas(52): Undeclared identifier: 'SCF_SELECTION'
Avatar billede stone Forsker
29. marts 2003 - 13:12 #8
skriv i uses " richedit"
Avatar billede armena Nybegynder
29. marts 2003 - 13:52 #9
No errors nu..
Men det virker underligt.. Når man vil have hævet skrift, så kan man ikke se toppen af bogstaverne og når man vil have Sænket, så kan man ikke se bunden.

Bedre måde?
Avatar billede stoney Nybegynder
29. marts 2003 - 14:10 #10
Du skal ændre disse værdier

  CFM_Superscript: yOffset := 60;
      CFM_Subscript: yOffset := -60;

Stoney
Avatar billede armena Nybegynder
29. marts 2003 - 15:02 #11
stoney, yeps, men det skal være mere sådan som stone skrev..
altså, størrelsen skal også blive lidt mindre
Avatar billede stoney Nybegynder
29. marts 2003 - 15:35 #12
så skal du bruge ascii
Her kan du bruge
² Ascii 178 2
³ Ascii 179 3
¹ Ascii 185 1
º Ascii 186 0
¼ Ascii 188 1/4
½ Ascii 189 1/2
¾ Ascii 190 3/4

ellers skal du have fat i en eller anden "skummel" 3.parts component

Stoney
Avatar billede armena Nybegynder
29. marts 2003 - 15:38 #13
jamen kan man ikke ændre noget i dit eksempel?
Avatar billede stoney Nybegynder
29. marts 2003 - 15:45 #14
Nu går jeg ud fra du ved hvad ascii er !
Der er kun 256 (0-255) karakterer at gøre godt med.

Ellers søg efter en math/scientific component.

Stoney
Avatar billede stone Forsker
29. marts 2003 - 16:10 #15
yep... prøv at kigge efter det her:
http://delphi.icm.edu.pl/
Avatar billede kfz Nybegynder
29. marts 2003 - 17:48 #16
armena>>stones eksempel virker perfekt hos mig, så hvorfor bruger du ikke bare det
Avatar billede armena Nybegynder
29. marts 2003 - 17:52 #17
kfz> virker også fint ved mig, men de hævede/sænkede skrifter skal bare være lidt mindre. (størrelsen)
Avatar billede kfz Nybegynder
29. marts 2003 - 20:10 #18
så de ikke bliver hævet/sænket så meget??
Avatar billede kfz Nybegynder
29. marts 2003 - 20:11 #19
ok, har fundet ud af hvad du mener
Avatar billede armena Nybegynder
29. marts 2003 - 21:30 #20
kfz> godt :)
Avatar billede kfz Nybegynder
29. marts 2003 - 23:04 #21
ved at sætte richedit1.SelAttributes.Size := 20; ind

procedure TForm1.Button2Click(Sender: TObject);
begin
<<<<<<<<<<<<<<<<<HER
RE_SetCharFormat(RichEdit1, CFM_Subscript);
end;

kan du lave teksten større, jeg kan ikke få lavet teksten mindre, men det kan være at du kan få noget ud af det
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester