Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "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
14-74481
pasha_golub
2003-10-01 16:59
2003.10.23
Явление четвертое, дизайнерское. Delphi Online Test


3-74090
Nick2050
2003-10-01 14:23
2003.10.23
Помогите с TQuery.UpdateCashe


1-74232
PavelOKES
2003-10-09 13:13
2003.10.23
Почему прога много занимает памяти?


3-73976
Dark Elf
2003-10-01 12:29
2003.10.23
Поиск по всем полям


14-74476
Johnmen
2003-10-02 23:36
2003.10.23
Как вы относитесь к журналу Хастлер?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский