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

Вниз

Почему не удается послать сообщение LB_SETTABSTOPS ???   Найти похожие ветки 

 
Альф ©   (2003-02-20 09:38) [0]

Для ListBox ??? Делаю так:

var
TabPos: array[0..1]of integer;
result: LongInt;
begin
TabPos[0] := 50;
TabPos[1] := 100;
result := GetWindowLong(ListBox1.Handle, GWL_STYLE) or LBS_USETABSTOPS;
result := SetWindowLong(ListBox1.Handle, GWL_STYLE, result);
if result = 0
then ShowMessage("false")
else ShowMessage("true");

result := SendMessage(ListBox1.Handle, LB_SETTABSTOPS, integer(2), LongInt(@TabPos[0]));
if result = 0
then ShowMessage("false")
else ShowMessage("true");

В результате получаю [true] [false]

В Help-е по поводу LB_SETTABSTOPS сказано следующее:
If all the specified tabs are set, the return value is TRUE; otherwise, it is FALSE.


 
Игорь Шевченко ©   (2003-02-20 10:00) [1]

ListBox.TabWidth := 50 не проще ли будет ?


 
Альф ©   (2003-02-20 10:09) [2]

2Игорь Шевченко © (20.02.03 10:00)
Не проще к сожалению :( - потому что нужно не одну позицию а несколько :) - смотрим StdCtrls и что мы видим :

if FTabWidth <> 0 then
SendMessage(Handle, LB_SETTABSTOPS, 1, Longint(@FTabWidth));
SetColumnWidth; //^^^ - вот это


- т.е. задается всего одна позиция - а мне нужно несколько :)


 
Игорь Шевченко ©   (2003-02-20 10:16) [3]

Попробуй:
Задать TabWidth не равный 0.
После того:

procedure TForm1.Button1Click(Sender: TObject);
var
TabPos: array[0..1]of integer;
result: LongInt;
begin
TabPos[0] := 50;
TabPos[1] := 100;

result := SendMessage(ListBox1.Handle, LB_SETTABSTOPS, integer(2), LongInt(@TabPos));
if result = 0
then ShowMessage("false")
else ShowMessage("true");
end;



 
Альф ©   (2003-02-20 10:24) [4]

2Игорь Шевченко © (20.02.03 10:16)
Спасибо, заработало, извини не додумался :) - еще не проснулся наверно
А как думаешь с чем это связано ?

Может с тем, что одно дело когда стиль устанавливается перед созданием окна, а другое дело - после создания ч-з SetWindowLong
Ведь если TabWidth <> 0, то ListBox-у стиль LBS_USETABSTOPS устанавливается ДО создания.


 
Игорь Шевченко ©   (2003-02-20 10:28) [5]


> Может с тем, что одно дело когда стиль устанавливается перед
> созданием окна, а другое дело - после создания ч-з SetWindowLong
> Ведь если TabWidth <> 0, то ListBox-у стиль LBS_USETABSTOPS
> устанавливается ДО создания.


Именно



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

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

Наверх




Память: 0.48 MB
Время: 0.018 c
6-5693
bkv
2003-01-13 11:14
2003.03.03
Как узнать свое имя в локальной сети?


1-5603
Ahmad K
2003-02-18 23:52
2003.03.03
КАК ПЕЧАТАТЬ TMEMO?


1-5641
Erik
2003-02-20 14:33
2003.03.03
Изменения статуса формы.


6-5707
dlK
2003-01-09 09:14
2003.03.03
Убить процесс на удаленной машине.


3-5416
eLVik
2003-02-12 15:34
2003.03.03
Проблемка с ADO