Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.03.03;
Скачать: [xml.tar.bz2];

Вниз

Почему не удается послать сообщение 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.008 c
14-5844
шотик
2003-02-13 09:54
2003.03.03
Quickreport для Delphi7


14-5729
SPeller
2003-02-14 13:47
2003.03.03
Включить Overlay ?


6-5679
mate
2003-01-11 15:54
2003.03.03
mailto


1-5615
Ozone
2003-02-20 09:51
2003.03.03
Создание компонентов в run-time


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





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