![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Эдит энабле:=фалсе, как сделать фонт цветом, как в труе? [D6, XP]
vegarulez © (2007-07-15 14:48:00)привет всем мастерам!
У меня такой вопрос, допустим на форме имеется эдит, когда он становится фалсе, меняется цвет текста немного, с чёрного, на несовсем чёрный, как сделать чтобы он даже когда фалсе был чёрным?
vegarulez (2007-07-20 07:32:00) [1]Псп, попробую.
alal (2007-07-17 21:22:00) [2]
> evvcom ©
Спасибо. Я раньше не знал, что так можно. Только
edit1.Enabled:=form1.ActiveControl<>edit1;
Тогда текст будет черным это именно то, чего хотел vegarulez ©.
evvcom (2007-07-17 10:11:00) [3]
> Alal © (16.07.07 21:14) [12]
:-)
твой код записывается гораздо проще:
Edit1.Enabled := Form1.ActiveControl = Edit1;
учи булеву алгебру
> Самое правильное решение
Самое правильное - фигней не страдать, не сбивать никого с толку. Я иногда наоборот хочу, чтобы в задизэйбленном едите можно было текст выделить и в буфер. Вот тогда меняю ReadOnly и Color. Цвет шрифта оставляю как есть, т.е. черный, тогда видно, что от Enabled := False стиль отличается, и есть желание его щелкнуть тогда.
Dib@zol (2007-07-16 22:05:00) [4]А мож поставить самопальный обработчик на WM_CTLCOLOREDIT? Если IsWindowEnabled(edit1.Handle)="фалсе", то рисуемся всёравно COLOR_WINDOW'ом и COLOR_WINDOWTEXT'ом.
Alal (2007-07-16 21:14:00) [5]а если так:
procedure TForm1.ApplicationEvents1Idle(Sender: TObject;
var Done: Boolean);
begin
if Form1.ActiveControl=Edit1 then Edit1.Enabled:=false
else Edit1.Enabled:=true;
end;
{RASkov} (2007-07-15 20:17:00) [6]> не надо прикидываться, речь шла про Эдит %)
Ну я вообще-то и про Эдит рассказывал… :)
Можно конечно и, примерно, так "извернуться":
type
TMyEdit = class(TEdit)
private
procedure WMPaint(var Message: TWMPaint); message WM_PAINT;
end;
..........
procedure TMyEdit.WMPaint(var Message: TWMPaint);
var Cnv: TControlCanvas;
begin
inherited;
if not Enabled then begin
Cnv:=TControlCanvas.Create;
Cnv.Control:=Self;
Cnv.Font.Assign(Font);
Cnv.FillRect(ClientRect);
Cnv.TextOut(1, 1, Text+' (disable)');
Cnv.Free;
end;
end;
Zagaevskiy (2007-07-15 20:14:00) [7]
>
> Положи его (Эдит) на контейнер, а контейнеру делай Енабле=фалсе.
> ...(TPanel например).
Самое правильное решение
antonn (2007-07-15 19:43:00) [8]
> {RASkov} © (15.07.07 19:21) [8]
не надо прикидываться, речь шла про Эдит %)
{RASkov} (2007-07-15 19:21:00) [9]> [7] antonn © (15.07.07 19:16)
> > Тебе нужен Label или лучше Статик с белым фоном....
>
> а как в нем привычным образом редактировать написанное?
[0]> как сделать чтобы он даже когда фалсе былчёрным?
А здесь как? :) Не надо ему походу его редактировать привычным образом....
Только вместо белого фона, нужно clWindow.... у меня просто белый, а про других я не подумал... )
antonn (2007-07-15 19:16:00) [10]
> Тебе нужен Label или лучше Статик с белым фоном....
а как в нем привычным образом редактировать написанное?
{RASkov} (2007-07-15 19:04:00) [11]> [0] vegarulez © (15.07.07 14:48)
Положи его (Эдит) на контейнер, а контейнеру делай Енабле=фалсе....(TPanel например).
> [2] vegarulez © (15.07.07 17:50)
Тебе нужен Label или лучше Статик с белым фоном....
Kolan (2007-07-15 18:09:00) [12]> но тогда как сделать чтоб мышой незя было эдит выделять
Тут поподробее бы что значит «выделять».
vegarulez (2007-07-15 18:02:00) [13]ну или поканает как ты написал... но тогда как сделать чтоб мышой незя было эдит выделять?
Kolan (2007-07-15 18:02:00) [14]> а мне нужно, чтобы его нельзя было мышкой выделить
Ну вот и не мучь пользователя, который за 15 лет уже привык, что если контрол недоступен, то он серый и текст в нем серый и не майся фигнёй.
Или опеши задачу полностью, возможно есть нормальное решение
vegarulez (2007-07-15 17:50:00) [15]не... так не канает... потому как едит мышкой мона выделить... а мне нужно, чтобы его нельзя было мышкой выделить....
Kolan (2007-07-15 15:00:00) [16]> Эдит энабле:=фалсе, как сделать фонт цветом, как в труе?
Сделать Енэйбл Тру, и РидОнли = Тру.