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

Вниз

Как ? 2 вопроса   Найти похожие ветки 

 
allrussia ©   (2002-05-27 04:34) [0]

1.Дано: Form1.Label1.Caption - с несколькими строчками текста (wordwrap включен). Как узнать значение Top относительно формы
у последней строки этой метки. (имхо надо узнать количество строк , помножить на (размер шрифта+расстояние между строчками), плюс высота первой строки. Но в голову не приходит как узнать.

2. Как запретить помещение в Listbox какой-то строки, например с названием "OPTIONS";
Пишу:

with ListBox do
for i:=0 to count-1 do
if UpperCase(ListBox.Items.Strings[i])="OPTIONS" then delete(i)

не работает..... ошибка out of bounds
Поправьте код, подозреваю что нужно downto но не знаю как


 
allrussia ©   (2002-05-27 04:37) [1]

ко 2 >> имеется ввиду что строка(и) уже там


 
Walker ©   (2002-05-27 04:54) [2]

1.
есть функция:
windows.DrawText(...);

например выглядеть это будет так

var
r: TRect;
h: Integer;
begin
r:=Rect(0, 0, Label1.Width, 0);
DrawText(Label1.Canvas.Handle,
PChar(Label1.Caption), -1, r,
DT_CALCRECT or
DT_LEFT or
DT_WORDBREAK
);
h:=Label1.Canvas.TextHeight("1");
end;
вот..... после выполнения этих ф-ций:

r - содержит размеры всего текста (r.Bottom - r.Top = высота всего текста)
h = высота одной строки

следовательно
Top_X := r.Bottom - r.Top + h; - то что требовалось найти


2. всё верно, цикл надо проходить от конца к началу, с низу-вверх:

with ListBox do
for i:=count-1 to 0 do
if UpperCase(ListBox.Items.Strings[i])="OPTIONS" then ListBox.Items.delete(i)


 
allrussia ©   (2002-05-27 06:43) [3]

Walker >> СпаСи6ище

Только (2) цикл не работает - может из-за Delphi3?

Я проверял у меня с конца циклы не работают



 
Sniffer   (2002-05-27 07:17) [4]

>Walker
with ListBox do
for i:=count-1 DOWNTO 0 do
if UpperCase(ListBox.Items.Strings[i])="OPTIONS" then ListBox.Items.delete(i)
>allrussia
Только (2) цикл не работает - может из-за Delphi3?
Это врядли :)


 
allrussia ©   (2002-05-28 02:20) [5]

Sniffer - спасибо, я уже сам догадался
Просто ты вначале написал to, поэтому...


 
rhf ©   (2002-05-28 02:42) [6]

out of bounds было потому, что вы запускали на прохождение всех элементов, а в середине один или несколько удаляли, соответственно их становилось меньше чем то количество, которое вы собрались просмотреть


 
allrussia ©   (2002-05-28 06:57) [7]

rhf - поделиться советом никогда не поздно! :))))))))



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

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

Наверх




Память: 0.48 MB
Время: 0.019 c
1-17933
yar
2002-05-26 23:45
2002.06.06
Delphi Update Pack 2 (надо ужить вместе Delphi 6 и C++Builder 6)


7-18175
SAlex
2002-03-06 18:48
2002.06.06
Прерывания


14-18137
Санёк
2002-05-01 18:57
2002.06.06
Программка :-)


3-17837
RDA
2002-05-16 20:55
2002.06.06
Поиск и подсчет уникальных записей в связанных таблицах


1-17956
SPeller
2002-05-27 21:28
2002.06.06
Комилятор Дельфей