Форум: "Основная";
Текущий архив: 2002.11.25;
Скачать: [xml.tar.bz2];
ВнизКомпонент. Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.009 c