![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как в edit отображать буквы разных цветов? [D5, WinME, Win2k]
Kirilius © (2003-08-11 23:45:00)
Уважаемые Мастера !!!
Подскажите пожалуйста как в 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);
...
Song (2003-08-18 09:06:00) [1]
WM_CTLCOLOREDIT
Kirilius (2003-08-17 12:59:00) [2]
А мне будет полезна любая инфа на эту тему!
Все равно всем спасибо!!!
KSergey (2003-08-16 14:59:00) [3]
Kirilius (16.08.03 14:04)
>> Сергеич (15.08.03 12:54)
Если можно!
turkirill@narod.ru
Не понимаю: вы же просили на API, а человек предлагает компоненту, т.е. уже это не API-шный Edit по определению.
Я что-то недопонимаю? Или зачем тогда было спрашивать именно про API?
Kirilius (2003-08-16 14:04:00) [4]
>> Сергеич (15.08.03 12:54)
Если можно!
turkirill@narod.ru
Сергеич (2003-08-15 12:54:00) [5]
Есть готовая компонента Лейтиса, с примером.
И моя доработка для форматиров. ввода, как в ДОСовском кларионе.
Могу выслать
Melamed (2003-08-14 16:13:00) [6]
Извините ошибка
Вместо строки
c := TCanvas.Create;
Должна быть строка
с := TCanvasControl.Create;
Melamed (2003-08-14 16:10:00) [7]
А не лучше бы в данном коде использовать класс TCanvasControl, потомок класса TCanvas. В этом случае данный код принимает следующий вид.
procedureTForm1.Button1Click(Sender: TObject);
var
c : TCanvasControl;
x, W : Integer;
begin
c := TCanvas.Create;
c.Control:=Edit1;
try
W:=0;
forx := 1 toLength(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
Andriy (2003-08-14 10:13:00) [8]
>>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.
Крот (2003-08-13 05:58:00) [9]
Выбираешь в контексте твоего окна фонт, цвет текста, и TextOut
Kirilius (2003-08-12 21:50:00) [10]
Конечно Edit был subclassed !
А вот как на счет букв разного цвета ?
Как мне это реализовать!?
Даже не обязательно в Edit, киньте плиз пример как вывести
хотя-бы букву на форме любым цветом (не черным и не из стандартной палитры Windows).
PS: Да и соотвецтвенно на Api!!!
Игорь Шевченко (2003-08-12 10:56:00) [11]
nikkie © (12.08.03 10:23)
Разумеется subclassed :)) Может, и изврат, но делали для операторов, чтобы латинские буквы были другого цвета, чем русские - часть ошибок ввода сразу исчезла :)
nikkie (2003-08-12 10:23:00) [12]
>Игорь Шевченко
если wndclass был у него edit и он был не subclassed, то что-то с трудом мне верится...
Игорь Шевченко (2003-08-12 09:45:00) [13]
Kirilius (11.08.03 23:45)
Использовать RichEdit и не мучиться
nikkie © (12.08.03 00:48)
Я видел :)
nikkie (2003-08-12 00:48:00) [14]
А ты когда-нибудь видел edit с разноцветными буквами?