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

Вниз

Ну Очень простой вопрос !!! (кол-во строк в лейбле )   Найти похожие ветки 

 
Ler   (2003-05-12 16:34) [0]

Мастера, Помогите!!!

На форме есть компонент Label1 и кнопка:

procedure TForm1.Button1Click(Sender: TObject);
begin
Label1.AutoSize:=false;
Label1.Width :=40;
Label1.Height :=100;
Label1.Caption :="Хочу знать количество строк!!!";
Label1.WordWrap:=true;
end;

Как получить это самое кол-во строк в лейбле после Label1.WordWrap:=true;?


 
Ler   (2003-05-12 16:56) [1]

АУ !!!


 
kull ©   (2003-05-12 17:04) [2]

А если взять ClientHeight и высоту фонта и поделить?
А можно еще через функцию DrawText (Win API) ...


 
Ler   (2003-05-12 17:05) [3]

АУ !!!
АУ !!!
АУ !!!




 
deedlit ©   (2003-05-12 17:09) [4]

Хм... а как ты их туда заносишь, если не секрет? ;)

Если так: Label1.Caption:="Borland"+chr(10)+chr(13)+"Delphi", где chr(10)+chr(13) - символ перевода каретки, то проблему можно решить банальным циклом. Нечто вроде While pos(chr(13), Label1.Caption)<>0 do Inc(Counter, 1), где Counter - счетчик числа строк. После завершения цикла нужно добавить к счетчику единицу, чтобы учлась последняя строка.


 
Zz_   (2003-05-12 17:10) [5]

Гы

var m:TMemo;
begin
m := TMemo.Create(Self);
m.Parent := Self;
m.Font := Label1.Font;
m.WordWrap := True;
m.ClientWidth := label1.Width;
m.Lines.Clear;
m.lines.Add(Label1.Caption);
MessageBox(0,PChar(IntToStr(m.Lines.Count)),"",0);
m.free;


 
Ler   (2003-05-12 17:11) [6]

2 deedlit

Чего-то я совсем Тебя не понял...



 
UserMicc ©   (2003-05-12 17:16) [7]

2 Ler (12.05.03 17:11)

Он говорит, что в цикле вставляй новые строчки с переводок коретки.. Потом же считай число "кореток" чтобы узнать число строк...


 
Ler   (2003-05-12 17:22) [8]

Не ребят, не пойдет. Дело в том, что я пишу свой компонент у которого Label только составная часть. Т.е. выглядит это примерно так: на панели лежит лейбл и в зависимости от высоты лейбла строится высота панельки (ну что-то типа AutoHeight для панели). Высота лейбла определяется количеством строк.
Извините за некоторый сумбур в объяснении.


 
deedlit ©   (2003-05-12 17:29) [9]

Или, ты имеешь в виду - узнать, сколько строк поместитеся на Label1 при текущих размерах? Попробуй Label1.Height div Label1.Canvas.TextHeight("ЛЮБОЙ ТЕКСТ"), то есть высоту компоненты нацело поделить на высоту строчки текста (ее тебе вернет TextHeight), отрисованного на его канве.


 
Ler   (2003-05-13 10:02) [10]

Ну так есть еще варианты ???
Напрягайте мозги, ПРОФИ !!!


 
dtrn   (2003-05-13 10:43) [11]

Length(Label1.Caption)


 
Ler   (2003-05-13 13:22) [12]

2 dtrn

???


 
default ©   (2003-05-13 14:33) [13]

ты вопрос нормально поставь
а то никто тебя не понимает...


 
Юрий Федоров ©   (2003-05-13 14:57) [14]

kull © (12.05.03 17:04)
А если взять ClientHeight и высоту фонта и поделить?



 
Sandman25   (2003-05-13 15:59) [15]

Либо как написал Zz_ (12.05.03 17:10)
Либо посмотри исходник TCustomLabel в StdCtrls, ознакомься DrawText из WinAPI, и напиши наследника от CustomLabel, который будет пересчитывать значение, возвращаемое DrawText, в количество строк и записывать его в новом property.


 
mukha ©   (2003-05-13 22:03) [16]

В run-time создай текстовое поле с такими же размерами как и сама метка и загрузи в него текст из memo с таким же шрифтом. Кол-во строк в memo определяется без труда, что будет соотв. к-ву строк в метке.


 
DK ©   (2003-05-14 03:30) [17]

Если Ты используешь стандартный лейбл, то можно просто установить AutoSize и после установки Caption, высота установится автоматически. Останется только прочитать это значение и установить высоту панельки


 
R   (2003-05-14 04:24) [18]

procedure TForm1.Button1Click(Sender: TObject);
var
S,S1:String;
I:Integer;
begin
S:= Memo1.text;
For I:=1 To Length(Memo1.text) do
If S[I]="-" Then S1:= S1+S[I]+#10#13 Else S1:= S1+S[I];
Label1.Caption:=S1;
Panel1.Height:= Label1.Height;//Вот нужный код остальное тест
Text:=IntToStr(Label1.Height);
end;


 
LexusR ©   (2003-05-14 07:52) [19]


function TForm1.GetCountLines(MyLabel: TLabel): integer;
var
Memo : TMemo;
begin
with TMemo.Create(Self) do
begin
ParentWindow := Application.MainForm.Handle;
Visible := false;
Width := MyLabel.Width;
Height := MyLabel.Height;
BorderStyle := bsNone;
WordWrap := true;
Text := MyLabel.Caption;
Result := Lines.count;
Free;
end;
end;



 
Ler   (2003-05-14 10:40) [20]

Спасибо Всем !!!



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

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

Наверх




Память: 0.51 MB
Время: 0.011 c
7-83763
Vityulka
2003-03-13 03:31
2003.05.26
Работа с иконками в трее


7-83759
[BAD]Angel
2003-03-26 19:34
2003.05.26
Как поставить атрибут


14-83704
SuperMagic
2003-05-06 10:49
2003.05.26
Преобразование из одного типа в другой


3-83400
Солер
2003-05-06 16:59
2003.05.26
Как отменить запрос?


1-83553
Rower
2003-05-14 00:25
2003.05.26
создание класса на основе TSringGrid