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

Вниз

TC_Insert   Найти похожие ветки 

 
Galkov ©   (2007-03-13 06:57) [0]

1) При вызове этого метода аж никак не меняется CurentIndex
Если входной аргумент Idx<=fCurentIndex, то это несправедливо
Может следует добавить в этот метод строку типа ???

if Idx<=fCurentIndex then inc(fCurentIndex);

Ибо мои пользователи неудовольствие выражали на отсутствие события по первому клику на 0-м табе :))

2) Неточность! Лишняя (хоть и не криминальная) строчка затесалась:

function TControl.TC_Insert(Idx: Integer; const TabText: KOLString;
.................
 Result.BoundsRect := TC_DisplayRect; //!!! Эта
 {$IFDEF OLD_ALIGN}
 Result.BoundsRect := TC_DisplayRect;//+ Galkov
 {$ENDIF}
 Perform(WM_SIZE,0,0); //May be changes of margins for TabControl
end;


Увы, не все сразу успеваю заметить :(


 
Galkov ©   (2007-03-13 07:00) [1]

Пардон, конечно fCurIndex, а не fCurentIndex :(


 
Galkov ©   (2007-03-13 18:37) [2]

Мда....
Как и раньше: чем дальше в лес, тем толще партизаны :(

Если еще посмотреть и TC_Delete, то становиться гораздо грустнее.
При NEW_ALIGN вообще AV получить без проблем.
Можно удалить и активную страницу. CurIndex после этого честно -1, чего не скажешь о fCurIndex (который и определяет срабатывание OnSelChange)
Последующее TC_Insert делает страницу невидимой, хотя именно этот таб оказывается выбранным...

Весело, в общем :))

Думается мне, надо рихтовать WndProcTabControl примерно так:

function WndProcTabControl( Self_: PControl; var Msg: TMsg; var Rslt: Integer ): Boolean;
.............
       case Hdr.code of
       TCN_SELCHANGING:
         Self_.fCurIndex := Self_.Perform( TCM_GETCURSEL, 0, 0 );
       TCN_SELCHANGE:
.............


Ну и условие: Result.Visible := Count=0; в TC_Insert не по делу получается.
Надо: Result.Visible := CurIndex<0;

В общем, Владимир, давайте я намылю Вам комплексный (+asm) патч для рассмотрения.
Если, конечно, Вы не возражаете против такого направления фиксинга

Осталось только понять, от чего, и на что патч :))
учитывая предыдущий...


 
Vladimir Kladov   (2007-03-14 15:52) [3]

Никуда спешить не надо. Спокойно, с расстановкой, делайте, и шлите.


 
Galkov ©   (2007-03-15 11:28) [4]

Дык делов-то - на пяток команд на asm-е...

Сделал UPD (и намылил) на то, чего у меня сейчас есть, относительно этого:
http://www.kolnmck.ru/files/254/kol.7z
Т.е., на все сразу

А в этом "сразу" оказался и альтернативный интерфейс для TabControl-а
Который вынести из под NEW_ALIGN не решился

Вот тест:

Program test;
uses  windows,messages,kol;

type TMainForm=object
 Control,Tabs,B1,B2,P:PControl;
 J:integer;
 procedure _OnClick1(Obj:PObj);
 procedure _OnClick2(Obj:PObj);
 procedure _OnChange(Obj:PObj);
end;

var MainForm:TMainForm;

procedure TMainForm._OnClick1;
begin
 Tabs.TC_Delete(2);
end;

procedure TMainForm._OnClick2;
begin
 P := NewEditBox(Tabs,[eoMultiline,eoNoHideSel]).SetSize(357,147).SetPosition(6,27);
 P.Color := clWhite;
 Tabs.TC_InsertControl(0,int2str(J),0,P);
 inc(J);
end;

procedure TMainForm._OnChange;
begin
 Beep(100,100);
end;

begin
 Applet := NewApplet("TabTest");
 with MainForm do begin
   Control := NewForm(Applet,"Test").SetSize(400,300);
   B1 := NewButton(Control,"Del2").SetPosition(10,10);
   B1.OnClick := _OnClick1;
   B2 := NewButton(Control,"Ins0").SetPosition(80,10);
   B2.OnClick := _OnClick2;
   Tabs := NewTabEmpty(Control,[],nil).SetSize(370,180).SetPosition(10,40);
   J := 1; while J<=4 do begin
     P := NewGroupbox(Tabs,"").SetSize(357,147).SetPosition(6,27);
     Tabs.TC_InsertControl(J,int2str(J),0,P);
     inc(J);
   end;
   Tabs.OnSelChange := _OnChange;
 end;
 Run(Applet);
end.


Смысл в том, что килобайт от align-а к кодам не притегивается.
Ну не считая "нестандартных" контролов для таба...



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

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

Наверх




Память: 0.48 MB
Время: 0.023 c
2-1190055058
tymofy
2007-09-17 22:50
2007.10.14
Правила записи record, ...


15-1189617278
Vlad Oshin
2007-09-12 21:14
2007.10.14
Подключение на основе сверхзвуковой ударной волны


15-1189870254
ЭРИКА
2007-09-15 19:30
2007.10.14
С ДНЕМ РОЖДЕНИЯ КАЙ


3-1181379653
Девушка
2007-06-09 13:00
2007.10.14
странное поведение interbase?


15-1189477252
Slider007
2007-09-11 06:20
2007.10.14
С днем рождения ! 11 сентября 2007 вторник