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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.08.2010, 20:36   #1
uraura
Пользователь
 
Регистрация: 29.10.2008
Сообщений: 87
По умолчанию многострочный хинт с делением по словам

имеется:
Edit1.text - строка в несколько слов (естесственно не влазит целиком в поле ввода)
нужно:
показать хинт который при большом количестве слов будет выводить текст по словам в несколько строк (желательно обвести его в RoundRec)
uraura вне форума Ответить с цитированием
Старый 16.08.2010, 21:17   #2
chertovich
Форумчанин
 
Аватар для chertovich
 
Регистрация: 26.07.2009
Сообщений: 489
По умолчанию

Цитата:
Сообщение от uraura Посмотреть сообщение
имеется:
Edit1.text - строка в несколько слов (естесственно не влазит целиком в поле ввода)
нужно:
показать хинт который при большом количестве слов будет выводить текст по словам в несколько строк (желательно обвести его в RoundRec)
Код немного поправь, а так норма
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  Str: String;
begin
  Edit1.ShowHint := True;
  Str := Edit1.Text;
  while Length(Str) > 0 do
  begin
    if Str <> Edit1.Text then
      Edit1.Hint := Edit1.Hint + #13;
    Edit1.Hint := Edit1.Hint + Copy(Str, 1, 10);
    Delete(Str, 1, 10);
  end;
end;
Если в глубине души вы программист, то, следуя своим наклонностям, вы захотите написать кусок кода.
chertovich вне форума Ответить с цитированием
Старый 16.08.2010, 21:42   #3
uraura
Пользователь
 
Регистрация: 29.10.2008
Сообщений: 87
По умолчанию

спасибо за ответ почти в точку, но
разделять не посимвольно а по словам нужно
и при повторном наведении текст удваивается
будем ковырять
uraura вне форума Ответить с цитированием
Старый 16.08.2010, 21:50   #4
chertovich
Форумчанин
 
Аватар для chertovich
 
Регистрация: 26.07.2009
Сообщений: 489
По умолчанию

Вот я поэтому и написал что надо поправить)
Ставь + в репутацию напишу как ты хочешь))
Если в глубине души вы программист, то, следуя своим наклонностям, вы захотите написать кусок кода.
chertovich вне форума Ответить с цитированием
Старый 16.08.2010, 22:34   #5
uraura
Пользователь
 
Регистрация: 29.10.2008
Сообщений: 87
По умолчанию

примерно так
если строка более 100 символов то нужно найти последний до 100го символа пробел и отрезать строку после него
потом добавить #13
снова проверить остаток на длину в 100 символов опять отрезать по пробел и тд пока строка не кончится
типо так только в код осталось перевести
+уже нажал)))

Последний раз редактировалось uraura; 16.08.2010 в 22:39.
uraura вне форума Ответить с цитированием
Старый 16.08.2010, 22:37   #6
chertovich
Форумчанин
 
Аватар для chertovich
 
Регистрация: 26.07.2009
Сообщений: 489
По умолчанию

Ты забыл про мой "вопрос" к тебе, читай выше
Если в глубине души вы программист, то, следуя своим наклонностям, вы захотите написать кусок кода.
chertovich вне форума Ответить с цитированием
Старый 16.08.2010, 22:48   #7
uraura
Пользователь
 
Регистрация: 29.10.2008
Сообщений: 87
По умолчанию

Цитата:
Сообщение от chertovich Посмотреть сообщение
Ты забыл про мой "вопрос" к тебе, читай выше
не забыл читай выше

так никто мне и не помог совсем

Последний раз редактировалось artemavd; 24.08.2010 в 05:48.
uraura вне форума Ответить с цитированием
Старый 10.09.2010, 05:42   #8
uraura
Пользователь
 
Регистрация: 29.10.2008
Сообщений: 87
По умолчанию

ну вот я сам сделал зацените пожалуйста

на форме1 едит и у него хинт с помощью второй формы на которой лайбл с wordwrap:=true
вот код

//при наведении на едит показываем форму2 с его текстом
procedure TForm1.Edit1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
Form2.Top:=Mous.CursorPos.y;
Form2.Left:=Mous.CursorPos.x;
Form2.label1.Caption:=edit1.Text;
ShowWindow(Form2.Handle, SW_SHOWNA);
end;

//при смещении курсора с едита на форму1 прячем форму2
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
ShowWindow(form2.Handle, SW_HIDE);
end;
uraura вне форума Ответить с цитированием
Старый 10.09.2010, 05:46   #9
uraura
Пользователь
 
Регистрация: 29.10.2008
Сообщений: 87
По умолчанию

и еще для скругления моего хинта

//в процедуре создания формы2 задаем размеры и делаем ее скругленной
procedure TForm2.FormCreate(Sender: TObject);
var
Region: Cardinal;
begin
Form2.Height:=100;
Form2.Width:=400;
label1.Top:=20;
label1.Left:=20;
label1.Height:=80;
label1.Width:=380;
with Form2 do
begin
Region := CreateRoundRectRgn(10, 10, Width, Height, 30,30);
SetWindowRgn(Handle, Region, True);
end;
end;
uraura вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Неправильно всплывает хинт madmech Общие вопросы Delphi 7 04.06.2009 16:57
Многострочный HINT Alex Cones Общие вопросы Delphi 8 27.04.2009 18:08
Проблема с делением 1 на 2 Bravo Общие вопросы C/C++ 4 20.10.2008 23:20
Графический хинт в ListView pesad Компоненты Delphi 1 21.08.2008 20:11
Пренос по словам pinhead Microsoft Office Excel 4 16.07.2008 05:11