Problém s RichEdit.SelAttributes – Delphi – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Problém s RichEdit.SelAttributes – Delphi – Fórum – Programujte.comProblém s RichEdit.SelAttributes – Delphi – Fórum – Programujte.com

 

TuroLog
~ Anonymní uživatel
5 příspěvků
14. 7. 2007   #1
-
0
-

Když chci u RichEditu změnit barvu, velikost nebo styl písma tak, že se změna projeví jenom na určitý úsek textu, použiju metodu SelAttributes. Funguje mi...

MainText.SelAttributes.Size:=FontDialog.Font.Size;

MainText.SelAttributes.Color:=FontDialog.Font.Color;
MainText.SelAttributes.Style:=FontDialog.Font.Style;

...ale nefunguje mi...
MainText.SelAttributes.Name:=FontDialog.Font.Name;

Proč?

Nahlásit jako SPAM
IP: ...–
dadajax
~ Anonymní uživatel
17 příspěvků
14. 7. 2007   #2
-
0
-

To TuroLog:Nejsem si jisty, zrovna nemam nainstalovane delphi, ale nemelo by byt spravne:

MainText.SelAttributes.Font.Name:=FontDialog.Font.Name;

Nahlásit jako SPAM
IP: ...–
TuroLog
~ Anonymní uživatel
5 příspěvků
14. 7. 2007   #3
-
0
-

To dadajax: Ne nemělo, to by se mi ten program ani nespustil. Mě se ten program spustí, akorát to nereaguje na změnu SelAttributes.Name... nebo přesněji řečeno: narozdíl od SelAttributes.Style, SelAttributes.Size a SelAttributes.Color, funguje SelAttributes.Name jenom, když je nějaký text označený (ten označený text se potom změní)

Nahlásit jako SPAM
IP: ...–
dadajax
~ Anonymní uživatel
17 příspěvků
14. 7. 2007   #4
-
0
-

To TuroLog:Pokud to chapu dobre, tak chces aby ti to udelalo tohle:
kdyz nebude oznaceny zadny text, tak zmeni font v celem textu.

jestli jo, tak bych to resil tak, ze bych text oznacil pomoci selstart a sellength a az potom bych provedl zmenu fontu. Pokud to neni to co potrebujes tak to trosku vice rozved, co presne potrebujes.

Nahlásit jako SPAM
IP: ...–
TuroLog
~ Anonymní uživatel
5 příspěvků
15. 7. 2007   #5
-
0
-

Spíš bych chtěl, aby (když nic nebude označeno) by tím písmem text, který teprve budu psát (tedy stejně jako u ostatních atributů) a pokud to nejde, tak aby se to písmo změnilo aspoň na řádku, na kterém je kurzor.

Nahlásit jako SPAM
IP: ...–
Jura
~ Anonymní uživatel
637 příspěvků
15. 7. 2007   #6
-
0
-

To TuroLog:

Stačí toto?



if(FontDialog1.Execute) then
RichEdit1.SelAttributes.Assign(FontDialog1.Font);

Nahlásit jako SPAM
IP: ...–
TuroLog
~ Anonymní uživatel
5 příspěvků
16. 7. 2007   #7
-
0
-

To Jura: Díky, to mi pomohlo, ale co když bych měl kombobox se seznamem písem (jako je to třeba ve Wordu) a chtěl bych tu změnu písma samostatně (jako je to ve Wordu :) )?

Nahlásit jako SPAM
IP: ...–
Jura
~ Anonymní uživatel
637 příspěvků
16. 7. 2007   #8
-
0
-

To TuroLog:

Nějak nerozumím v čem je rozdíl? Místo FontDialgu použij ComboBox, to naplň názvy dostupných fontů, a dále je to stejné. Nebo jsi myslel něco jiného? Nevím, co si mám pod tím "samostaně" představit..

Nahlásit jako SPAM
IP: ...–
Jura
~ Anonymní uživatel
637 příspěvků
16. 7. 2007   #9
-
0
-

To TuroLog:

Nudil jsem se, tak můžeš zkusit tohle:
1) Plácni na formulář RichEdit a ComboBox
2) Vlož kód
3) Nastav ComboBoxu property Style na csOwnerDrawFixed
4) Prirad mu jendotlive Eventy(OnChange a OnDrawItem)
5) U RichEditu nastva Eventu OnClick a OnKeyDown



unit Unit1;

interface

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

type
TForm1 = class(TForm)
ComboBox1: TComboBox;
RichEdit1: TRichEdit;
procedure FormCreate(Sender: TObject);
procedure ComboBox1DrawItem(Control: TWinControl; Index: Integer;
Rect: TRect; State: TOwnerDrawState);
procedure RichEdit1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure ComboBox1Change(Sender: TObject);
procedure RichEdit1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
ComboBox1.Items := Screen.Fonts;
end;

procedure SetActiveText(Combo: TCustomComboBox; const FontName: string);
var ind : Integer;
begin
Assert(Combo <> NIL);
ind := Combo.Items.IndexOf(FontName);
if(ind = -1) then exit; // not found
Combo.ItemIndex := ind;
end;

procedure TForm1.ComboBox1DrawItem(Control: TWinControl; Index: Integer;
Rect: TRect; State: TOwnerDrawState);
var c: TComboBox;
begin
c := TComboBox(Control);
c.Brush.Color := clWhite;
c.Canvas.FillRect(Rect);
c.Canvas.Font.Name := c.Items[Index];
c.Canvas.Font.Size := 12;
Windows.DrawText(c.Canvas.Handle, PChar(c.Items[Index]), Length(c.Items[Index]), Rect, DT_CENTER);
end;

procedure TForm1.RichEdit1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
SetActiveText(ComboBox1,RichEdit1.SelAttributes.Name);
end;

procedure TForm1.ComboBox1Change(Sender: TObject);
begin
RichEdit1.SelAttributes.Name := ComboBox1.Items[ComboBox1.ItemIndex];
RichEdit1.SetFocus;
end;

procedure TForm1.RichEdit1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if(Key in [VK_UP,VK_DOWN,VK_LEFT,VK_RIGHT,VK_HOME,VK_END]) then
SetActiveText(ComboBox1, RichEdit1.SelAttributes.Name);
end;

end.

Nahlásit jako SPAM
IP: ...–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 5 hostů

Podobná vlákna

RichEdit — založil massic

RichEdit — založil Danstahr

C++Builder - RichEdit — založil Radim92

RichEdit kurzor — založil bronek

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý