Форум: "WinAPI";
Текущий архив: 2003.10.23;
Скачать: [xml.tar.bz2];
ВнизКак в 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 вся ветка
Форум: "WinAPI";
Текущий архив: 2003.10.23;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.01 c