Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.10.23;
Скачать: CL | DM;

Вниз

Как в edit отображать буквы разных цветов?   Найти похожие ветки 

 
Kirilius   (2003-08-11 23:45) [0]

Уважаемые Мастера !!!
Подскажите пожалуйста как в edit отображать буквы разных цветов?
Если можно с примерчиками, или хотябы подскажите куда копать!

Var
...
hEdit:HWND;
...
hEdit:=CreateWindowEx(WS_EX_CLIENTEDGE,"Edit","",
WS_VISIBLE or WS_CHILD or
ES_MULTILINE or ES_AUTOVSCROLL,
1,1,538,380-31,Handle,0,hInst,nil);
...


 
nikkie ©   (2003-08-12 00:48) [1]

А ты когда-нибудь видел edit с разноцветными буквами?


 
Игорь Шевченко ©   (2003-08-12 09:45) [2]

Kirilius (11.08.03 23:45)

Использовать RichEdit и не мучиться

nikkie © (12.08.03 00:48)

Я видел :)


 
nikkie ©   (2003-08-12 10:23) [3]

>Игорь Шевченко
если wndclass был у него edit и он был не subclassed, то что-то с трудом мне верится...


 
Игорь Шевченко ©   (2003-08-12 10:56) [4]

nikkie © (12.08.03 10:23)

Разумеется subclassed :)) Может, и изврат, но делали для операторов, чтобы латинские буквы были другого цвета, чем русские - часть ошибок ввода сразу исчезла :)


 
Kirilius   (2003-08-12 21:50) [5]

Конечно Edit был subclassed !
А вот как на счет букв разного цвета ?
Как мне это реализовать!?
Даже не обязательно в Edit, киньте плиз пример как вывести
хотя-бы букву на форме любым цветом (не черным и не из стандартной палитры Windows).
PS: Да и соотвецтвенно на Api!!!


 
Крот ©   (2003-08-13 05:58) [6]

Выбираешь в контексте твоего окна фонт, цвет текста, и TextOut


 
Andriy   (2003-08-14 10:13) [7]

>>Kirilius (11.08.03 23:45)
Работает! Пользуйся на здоровье!

unit Unit1;

interface

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

type
TForm1 = class(TForm)
Edit1: TEdit;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
c : TCanvas;
EditDc : HDC;
x, W : Integer;
begin
c := TCanvas.Create;
EditDc := GetDc(Edit1.Handle);
c.handle := EditDc;
W:=0;
for x := 1 To Length(Edit1.Text) do
begin
c.Font.Color := Random($00FFFFF);
c.Font.Size:=Edit1.Font.Size;
c.Brush.Style:=bsSolid;
c.TextHeight(Edit1.Text);
c.TextWidth(Edit1.Text);
//X=1;Y=1, for border
c.TextOut(W+1,1,Edit1.Text[x]);
W:=W+c.TextWidth(Edit1.Text[x]);
end;
Releasedc(Form1.Handle,Form1.Canvas.Handle);
c.Free;
end;

end.


 
Melamed ©   (2003-08-14 16:10) [8]

А не лучше бы в данном коде использовать класс TCanvasControl, потомок класса TCanvas. В этом случае данный код принимает следующий вид.

procedure TForm1.Button1Click(Sender: TObject);
var
c : TCanvasControl;
x, W : Integer;
begin
c := TCanvas.Create;
c.Control:=Edit1;
try
W:=0;
for x := 1 to Length(Edit1.Text) do
begin
c.Font.Color := Random($00FFFFF);
c.Font.Size:=Edit1.Font.Size;
c.Brush.Style:=bsSolid;
c.TextHeight(Edit1.Text);
c.TextWidth(Edit1.Text);
// X=1;Y=1, for border
c.TextOut(W+1,1,Edit1.Text[x]);
W:=W+c.TextWidth(Edit1.Text[x]);
end;
finally
c.Free;
end;
end;

end.

И этот код доолжен быть в обрабодчике системного сообщения WM_PAINT редактора, в нашем случае Edit1


 
Melamed ©   (2003-08-14 16:13) [9]

Извините ошибка
Вместо строки
c := TCanvas.Create;
Должна быть строка
с := TCanvasControl.Create;


 
Сергеич   (2003-08-15 12:54) [10]

Есть готовая компонента Лейтиса, с примером.
И моя доработка для форматиров. ввода, как в ДОСовском кларионе.
Могу выслать


 
Kirilius   (2003-08-16 14:04) [11]

>> Сергеич (15.08.03 12:54)
Если можно!
turkirill@narod.ru


 
KSergey ©   (2003-08-16 14:59) [12]

Kirilius (16.08.03 14:04)
>> Сергеич (15.08.03 12:54)
Если можно!
turkirill@narod.ru


Не понимаю: вы же просили на API, а человек предлагает компоненту, т.е. уже это не API-шный Edit по определению.
Я что-то недопонимаю? Или зачем тогда было спрашивать именно про API?


 
Kirilius   (2003-08-17 12:59) [13]

А мне будет полезна любая инфа на эту тему!

Все равно всем спасибо!!!


 
Song ©   (2003-08-18 09:06) [14]

WM_CTLCOLOREDIT



Страницы: 1 вся ветка

Текущий архив: 2003.10.23;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.017 c
3-73966
Caesar
2003-09-24 15:36
2003.10.23
группировка в QReport


7-74508
Nosik_alex
2003-08-06 10:17
2003.10.23
как создать виртуальный принтер


1-74195
AngelSaint
2003-10-06 13:11
2003.10.23
Шрифты и кодировки


3-74056
Vemer
2003-10-02 18:05
2003.10.23
Глюки TDBLookupComboBox.


3-74073
Stas
2003-10-01 14:57
2003.10.23
Редактирование TBLOBField (Image)