Главная страница
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.02 c
7-5877
faf
2002-12-26 08:06
2003.03.03
Проблема с видео картой S3 Virge DX


14-5718
Дмитрий К.К.
2003-02-14 06:23
2003.03.03
Именинники 14 февраля


14-5748
Мазут Береговой
2003-02-16 05:48
2003.03.03
Маленькая хитрость в копилку...


1-5479
Dr.Abolo
2003-02-19 12:35
2003.03.03
перехват клавиши


14-5715
Сергей
2003-02-13 02:02
2003.03.03
Своеобразная