Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.11.25;
Скачать: CL | DM;

Вниз

Компонент.   Найти похожие ветки 

 
Demon[DZ]   (2002-11-11 16:02) [0]

Привет всем!
Я пишу свой компонент в стиле ХР, и вот ночю такую фитчу.
Когда фокус находится на моёи компоненте, чтоб в самом правой стороне появлялась кнопка тоже в стиле ХР.
А проблема вот в чем: если изменяется текст, то стирается область и для кнопки. А если мышку навести на кнопку, то кнопка заново прорисовывается. Как сделать так, чтоб при изминении текста область для кнопки нетрогалась?
Заранее благодарен.


 
Smithson ©   (2002-11-11 16:07) [1]

"Дорогие товарищи ученые!
У меня в подвале который год происходит подземный стук. Объясните, плжалуйста, как он происходит..." Это цитата.
Гони код своего компонента, скриншот или попытайся объяснить еще раз, но поняьнее - как для тупых.


 
Demon[DZ]   (2002-11-11 16:11) [2]

Текст компоненты довольно большой.
Могу на мыло.


 
Smithson ©   (2002-11-11 16:17) [3]

Можно и на мыло, но лучше объясни проще и подробнее, что у тебя происходит, из-за чего и чего из этого тебе не надо. Извини, но после в самой правой стороне я понял, что ничего не понял.


 
Demon[DZ]   (2002-11-11 16:37) [4]

XPEditBtn:


 
Demon[DZ]   (2002-11-11 16:39) [5]


XPEditBtn:


 
Demon[DZ]   (2002-11-11 17:15) [6]

Что никто незнает?


 
oss ©   (2002-11-11 17:23) [7]

я не пойму причем тут стиль ХР...
ты EhLib и TBX не пробовал использовать ?
а так посмотри изменение размера и прорисовку,
там и копай


 
Набережных С.   (2002-11-11 18:29) [8]

var
R: TRect;
begin
R:=Rect(2,0,ClientWidth - FButton.Width - 2,ClientHeight + 1);
SendMessage(Handle, EM_SETRECTNP, 0, LongInt(@R));
end;


 
Alex44   (2002-11-11 19:24) [9]

Sdelajte v Paint (ili chto tam u Vas otvechaet za risovanie) prinuditel"noe prorisovyvanie knopki.


 
Demon[DZ]   (2002-11-12 12:13) [10]

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;
{##############################################################################}



 
Игорь Шевченко ©   (2002-11-12 13:09) [11]

Demon[DZ] (11.11.02 16:02)

RTFS: RxLib ToolEdit.pas


 
Набережных С.   (2002-11-12 17:53) [12]

>Demon[DZ] (12.11.02 12:13)

Этот код нужно оформить в виде процедуры и вызывать в CreateWnd и при изменении размеров компонента, после коррекции положения кнопки(например, в обработчике WM_SIZE, может и еще где, сейчас уже точно не помню). И он основан на предположении, что у твоего компонента окно класса EDIT


 
Demon[DZ]   (2002-11-12 18:10) [13]

>Набережных С.
Если вас незатруднит, могли бы посматрерь исходники моего компонента, а то я уже запарился:(((


 
Набережных С.   (2002-11-12 18:52) [14]

Кидай sergeynbr@beep.ru. Но посмотрю завтра, потому как сегодня мы довольно неплохо отметили один небольшой праздник:) Да, и отправляй только PAS и, если нужно, RES fails.


 
Набережных С.   (2002-11-13 15:36) [15]

Смотри почту. Немного подправил в части вывода текста, дальше сам. Не понял только, почему ты наследуешь от TWinControl, а не от TCustomEdit, там же большая часть этого уже сделана. Подумай об этом. И зачем вообще нужен FEditBtnContro тоже не понятно.


 
Demon[DZ]   (2002-11-13 16:48) [16]

>Набережных С.
Спасибо вам!!!!!!!, я вам обязан по гроб:))



Страницы: 1 вся ветка

Текущий архив: 2002.11.25;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.018 c
14-82999
Шишкин Илья
2002-10-30 21:30
2002.11.25
Оцените мою первую игру.


3-82631
KAA
2002-10-31 22:27
2002.11.25
Запрос работает по разному.


1-82710
Comp
2002-11-14 17:11
2002.11.25
Тупой вопрос


6-82905
Nikolas ShmuS
2002-09-25 01:06
2002.11.25
Задачка = Проверить есть ли комп в сети


6-82901
boolean
2002-10-01 09:19
2002.11.25
Объясните