![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Компонент. [D5, Win2k]
Demon[DZ] © (2002-11-11 16:02:00)Привет всем!
Я пишу свой компонент в стиле ХР, и вот ночю такую фитчу.
Когда фокус находится на моёи компоненте, чтоб в самом правой стороне появлялась кнопка тоже в стиле ХР.
А проблема вот в чем: если изменяется текст, то стирается область и для кнопки. А если мышку навести на кнопку, то кнопка заново прорисовывается. Как сделать так, чтоб при изминении текста область для кнопки нетрогалась?
Заранее благодарен.
Demon[DZ] (2002-11-13 16:48:00) [1]>Набережных С.
Спасибо вам!!!!!!!, я вам обязан по гроб:))
Набережных С. (2002-11-13 15:36:00) [2]Смотри почту. Немного подправил в части вывода текста, дальше сам. Не понял только, почему ты наследуешь от TWinControl, а не от TCustomEdit, там же большая часть этого уже сделана. Подумай об этом. И зачем вообще нужен FEditBtnContro тоже не понятно.
Набережных С. (2002-11-12 18:52:00) [3]Кидай sergeynbr@beep.ru. Но посмотрю завтра, потому как сегодня мы довольно неплохо отметили один небольшой праздник:) Да, и отправляй только PAS и, если нужно, RES fails.
Demon[DZ] (2002-11-12 18:10:00) [4]>Набережных С.
Если вас незатруднит, могли бы посматрерь исходники моего компонента, а то я уже запарился:(((
Набережных С. (2002-11-12 17:53:00) [5]>Demon[DZ] (12.11.02 12:13)
Этот код нужно оформить в виде процедуры и вызывать в CreateWnd и при изменении размеров компонента, после коррекции положения кнопки(например, в обработчике WM_SIZE, может и еще где, сейчас уже точно не помню). И он основан на предположении, что у твоего компонента окно класса EDIT
Игорь Шевченко (2002-11-12 13:09:00) [6]Demon[DZ] (11.11.02 16:02)
RTFS: RxLib ToolEdit.pas
Demon[DZ] (2002-11-12 12:13:00) [7]To Набережных С., что-то неполучается. Я ваш код вставлял и в procedure TSLXPEdit.CMEnter(var Message: TCMGotFocus) и procedure TSLXPEdit.CMExit(var Message: TCMLostFocus)
Мой компонент наследник от TWinControl.
Вот отрывки кода:
constructor TSLXPEdit.Create(AOwner: TComponent);
const EditStyle = [csClickEvents, csSetCaption, csDoubleClicks, csFixedHeight];
var Bt, Bh, Bw, Bl : integer;
begin
inherited Create(AOwner);
if NewStyleControls then ControlStyle := EditStyle
else ControlStyle := EditStyle + [csFramed];
Color := clWhite;
Width := 121;
Height := 25;
FAutoSize := True;
AdjustHeight;
TabStop := True;
FNumberFormat := None;
FAlignment := taLeftJustify;
FEnabledBorderColor := BORDER_ENABLED;
FDisabledBorderColor := BORDER_DISABLED;
FEnabledBorderWidth := ENABLED_WIDTH;
FDisabledBorderWidth := DISABLED_WIDTH;
MouseIn := False;
Bt := Top;
Bh := Height-4;
Bw := 20;
Bl := Left+Width-Bw-4;
FEditBtn := TSLXPButton.Create(nil);
with (FEditBtn) do
begin
Top := Bt;
Left := Bl;
Height := Bh;
Width := Bw;
Parent := Self;
Caption := "...";
Visible := False;
end;
end;
{##############################################################################}
procedure TSLXPEdit.CMEnter(var Message: TCMGotFocus);
var R: TRect;
begin
MouseIn := True;
if not (csLButtonDown in ControlState) and
(GetWindowLong(Handle, GWL_STYLE) and ES_MULTILINE = 0) then SelectAll;
inherited;
FEditBtn.Visible := True;
Invalidate;
end;
{##############################################################################}
procedure TSLXPEdit.CMExit(var Message: TCMLostFocus);
var R: TRect;
begin
MouseIn := False;
if not (csLButtonDown in ControlState) and
(GetWindowLong(Handle, GWL_STYLE) and ES_MULTILINE = 0) then SelectAll;
inherited;
FEditBtn.Visible := False;
Invalidate;
end;
{##############################################################################}
Alex44 (2002-11-11 19:24:00) [8]Sdelajte v Paint (ili chto tam u Vas otvechaet za risovanie) prinuditel"noe prorisovyvanie knopki.
Набережных С. (2002-11-11 18:29:00) [9]var
R: TRect;
begin
R:=Rect(2,0,ClientWidth - FButton.Width - 2,ClientHeight + 1);
SendMessage(Handle, EM_SETRECTNP, 0, LongInt(@R));
end;
oss (2002-11-11 17:23:00) [10]я не пойму причем тут стиль ХР...
ты EhLib и TBX не пробовал использовать ?
а так посмотри изменение размера и прорисовку,
там и копай
Demon[DZ] (2002-11-11 17:15:00) [11]Что никто незнает?
Demon[DZ] (2002-11-11 16:39:00) [12]
XPEditBtn:
Demon[DZ] (2002-11-11 16:37:00) [13]XPEditBtn:
Smithson (2002-11-11 16:17:00) [14]Можно и на мыло, но лучше объясни проще и подробнее, что у тебя происходит, из-за чего и чего из этого тебе не надо. Извини, но после в самой правой сторонея понял, что ничего не понял.
Demon[DZ] (2002-11-11 16:11:00) [15]Текст компоненты довольно большой.
Могу на мыло.
Smithson (2002-11-11 16:07:00) [16]"Дорогие товарищи ученые!
У меня в подвале который год происходит подземный стук. Объясните, плжалуйста, как он происходит..." Это цитата.
Гони код своего компонента, скриншот или попытайся объяснить еще раз, но поняьнее - как для тупых.