Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.012 c
4-83049
Polox
2002-10-12 18:03
2002.11.25
Как соединиться с интнрнетом


14-82998
Залетевший
2002-11-07 19:20
2002.11.25
Биос СРОЧНО


1-82848
ton2
2002-11-14 12:52
2002.11.25
Написание компонент и TDataLink


1-82788
Юра
2002-11-13 15:22
2002.11.25
Файлы помощи HLP


1-82686
Cranium
2002-11-13 12:07
2002.11.25
Перенос из D3 в D5





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский