Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 10.01.2010, 09:10   #1
newprog12
Пользователь
 
Регистрация: 08.01.2010
Сообщений: 21
По умолчанию Автоматическое растягивание (width) панели StatusBar'a

Есть StatusBar
В нем выделены три панели
panel[0]
panel[1]
panel[3]

В них отображается текст (тип string), но длина текста каждый раз разная.

Задача : необходимо чтобы panel[0] и panel[1] автоматический подстраивали свою ширину (width) по размер передаваемого текста.

Пожалуйста, помогите.
newprog12 вне форума
Старый 10.01.2010, 09:26   #2
ОДИНОЧЕСТВО В СЕТИ
Любопытная Вредина
Участник клуба
 
Аватар для ОДИНОЧЕСТВО В СЕТИ
 
Регистрация: 19.06.2009
Сообщений: 1,285
По умолчанию

Вот: через Ж конечно! но работает
Код:
procedure SetText(SB : TStatusBar; I : Integer;
    const Text: String);
var l:tlabel;
begin
l:=tlabel.Create(self);
l.AutoSize:=true;
l.Font.Assign( SB.Font);
l.Caption:=Text+'     ';
sb.Panels[i].Width:=l.Width;
sb.Panels[i].Text:=l.Caption;
l.Free;
end;
Дурь - это особая форма материи, которая не возникает ниоткуда и не исчезает никуда, а лишь переходит из одной головы в другую.

Последний раз редактировалось ОДИНОЧЕСТВО В СЕТИ; 10.01.2010 в 10:39.
ОДИНОЧЕСТВО В СЕТИ вне форума
Старый 10.01.2010, 09:46   #3
maxionans
Форумчанин
 
Аватар для maxionans
 
Регистрация: 02.01.2010
Сообщений: 254
По умолчанию

А еще можно вот так:
Код:
procedure SetPanelText(AStatusBar : TStatusBar; APanelIndex : Integer;
    const AText: String);
var
  TmpStr : String;
begin
  Assert( Assigned( AStatusBar ) );
  Assert( ( APanelIndex >= 0 ) and ( APanelIndex < AStatusBar.Panels.Count ) );

  TmpStr := StringReplace( AText, ' ', '_', [ rfReplaceAll ] );
  if TmpStr = AText then TmpStr := TmpStr + '__';

  AStatusBar.Panels[ APanelIndex ].Width := AStatusBar.Canvas.TextWidth( TmpStr );
  AStatusBar.Panels[ APanelIndex ].Text := AText;
end;
Использовать таким образом:
SetPanelText( StatusBar1, 0, '123abcABC' );
SetPanelText( StatusBar1, 1, 'Loooooooooooooooooong teeeeeeeeeeeeeeeeeeeeeext' );
maxionans вне форума
Старый 10.01.2010, 09:48   #4
Kotofff
Участник клуба
 
Аватар для Kotofff
 
Регистрация: 11.01.2009
Сообщений: 1,917
По умолчанию

Действительно через Ж !!!!
А вот так ? :
Код:
    StatusBar1.Panels[0].Width := StatusBar1.Canvas.TextWidth(Edit1.Text) + 5; // + небольшой отступ
    StatusBar1.Panels[0].Text := Edit1.Text;
Вложения
Тип файла: zip Status Bar.zip (5.9 Кб, 14 просмотров)
"Заряженному танку в дуло не смотрят" @Dekmer in WoT
Kotofff вне форума
Старый 10.01.2010, 09:49   #5
maxionans
Форумчанин
 
Аватар для maxionans
 
Регистрация: 02.01.2010
Сообщений: 254
По умолчанию

Цитата:
Сообщение от ОДИНОЧЕСТВО В СЕТИ Посмотреть сообщение
Код:
l.Font.Name:=statusbar1.Font.Name;
l.Font.Size:=statusbar1.Font.Size;
Вместо этого обычно пишется что-то вроде
L.Font.Assign( StatusBar1.Font );
maxionans вне форума
Старый 10.01.2010, 09:51   #6
maxionans
Форумчанин
 
Аватар для maxionans
 
Регистрация: 02.01.2010
Сообщений: 254
По умолчанию

Цитата:
Сообщение от Kotofff Посмотреть сообщение
Код:
    StatusBar1.Panels[0].Width := StatusBar1.Canvas.TextWidth(Edit1.Text) + 5; // + небольшой отступ
Этот небольшой отступ не спасет при длинных строках - панель "съест" конец строки
maxionans вне форума
Старый 10.01.2010, 09:55   #7
ОДИНОЧЕСТВО В СЕТИ
Любопытная Вредина
Участник клуба
 
Аватар для ОДИНОЧЕСТВО В СЕТИ
 
Регистрация: 19.06.2009
Сообщений: 1,285
По умолчанию

Наругали
2maxionans
У меня кода меньше по сравнению с вашим постом №3
2Kotoff
Главное что работает
А через ж не через ж - не суть
Вся Винда так работает!
Дурь - это особая форма материи, которая не возникает ниоткуда и не исчезает никуда, а лишь переходит из одной головы в другую.
ОДИНОЧЕСТВО В СЕТИ вне форума
Старый 10.01.2010, 10:05   #8
Kotofff
Участник клуба
 
Аватар для Kotofff
 
Регистрация: 11.01.2009
Сообщений: 1,917
По умолчанию

ОДИНОЧЕСТВО В СЕТИ, прости не хотел
maxionans, ну так уважаемые программисты и им сочувствующие, мы предложили варианты - дальше вперед !!!
У формы и контролов масса свойств на которые можно опираться для достижения нужного эффекта, можно использовать сторонние компоненты которые. например, делают троеточие если строка типа не "лезет" в панель ... и т.д.
"Заряженному танку в дуло не смотрят" @Dekmer in WoT

Последний раз редактировалось Kotofff; 10.01.2010 в 10:08.
Kotofff вне форума
Старый 10.01.2010, 10:13   #9
maxionans
Форумчанин
 
Аватар для maxionans
 
Регистрация: 02.01.2010
Сообщений: 254
По умолчанию

Цитата:
Сообщение от ОДИНОЧЕСТВО В СЕТИ Посмотреть сообщение
2maxionans
У меня кода меньше по сравнению с вашим постом №3
Угу, меньше. А если нужно изменить текст для трех панелей? А для пяти? А для N?
maxionans вне форума
Старый 10.01.2010, 10:15   #10
maxionans
Форумчанин
 
Аватар для maxionans
 
Регистрация: 02.01.2010
Сообщений: 254
По умолчанию

Цитата:
Сообщение от Kotofff Посмотреть сообщение
мы предложили варианты - дальше вперед !!!
Ну так следующим вопросом от автора будет "как сделать так, чтобы панель не съедала текст при длинных строках"
maxionans вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Растягивание формы KORT Общие вопросы Delphi 7 23.10.2007 01:19
TImage-после image1.picture.bitmap.width и .height исчезает картинка Саня Компоненты Delphi 4 03.08.2007 07:55
Как включить/выключить автоматическое скрытие панели задач. fen Общие вопросы Delphi 2 10.07.2007 14:25
Изменение размера изображения, Crop image to fit height & width loopy-need Общие вопросы Delphi 4 23.11.2006 10:23