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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.01.2011, 11:48   #1
maloun
Форумчанин
 
Аватар для maloun
 
Регистрация: 03.01.2011
Сообщений: 233
По умолчанию Координаты выделеной строки ListBox

Здравствуйте. У меня такая проблема:
есть ListBox строки которого заполнены именами папок, при нажатии на кнопку "переименовать" должно появится Edit над выделеной строкой в которое я введу новое имя строки, но как заставить появлятся его именно над выделеной строкой всегда в одной позиции? Я использовал процедуру которую нашёл в интернете и немного её дописал:
Код:
procedure TForm1.ListBox1MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
var
ItemText: PChar;
ItemPos: Integer;
Ed:TEdit;
begin
ItemPos := ListBox1.ItemAtPos(Point(X,Y),True);
if ItemPos =-1 then Exit
else if Button = mbLeft then
Ed:=TEdit.Create(Form1.GroupBox1);
Ed.Parent:=Form1.GroupBox1;
Ed.Height:=14;
Ed.Width:=170;
Ed.Top:=Y+59;
Ed.Left:=35;
end;
Но она работает не совсем так как мне нужно, она ставит Edit на координаты мыши, что логично, но мне надо узнать координаты именно строки. Помогите пожалуйста.
пыжок

Последний раз редактировалось maloun; 09.01.2011 в 11:51.
maloun вне форума Ответить с цитированием
Старый 09.01.2011, 12:14   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
var ItemPos: Integer;r:TRect;p:TPoint;
begin
 ItemPos:=ListBox1.ItemAtPos(Point(x,y),true);
 r:=ListBox1.ItemRect(ItemPos);
 p:=ListBox1.ClientToParent(Point(r.Left,r.Top));
 if ItemPos<>-1 then begin
  with Edit1 do begin
   top:=p.y;
   Left:=p.x;
  end;
 end;
end;
Смысл понятен?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 09.01.2011, 12:39   #3
maloun
Форумчанин
 
Аватар для maloun
 
Регистрация: 03.01.2011
Сообщений: 233
По умолчанию

На самом деле не очень, но поискав в нитернете про ItemRect нашёл урок по созданию Edit на ListBox, спасибо)
http://www.delphiexpert.ru/view_lesson.php?id=54
пыжок

Последний раз редактировалось maloun; 09.01.2011 в 12:43.
maloun вне форума Ответить с цитированием
Старый 09.01.2011, 19:35   #4
maloun
Форумчанин
 
Аватар для maloun
 
Регистрация: 03.01.2011
Сообщений: 233
По умолчанию

Ещё вопрос, как заставить функцию RenameFile работать из процедуры keyPress моего динамического Edit'a, она пашет везде куда не засуну, кроме этой процедуры
Вложения
Тип файла: rar не пашет.rar (177.1 Кб, 8 просмотров)
пыжок
maloun вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
текст выходит за рамки строки в listbox codermoder Компоненты Delphi 2 01.11.2010 10:32
Скриншот выделеной области экрана. Мигает при выделениии. Casper-SC Общие вопросы .NET 2 27.03.2010 11:49
Как перетаскивать строки по ListBox Манжосов Денис :) Помощь студентам 1 06.04.2008 22:54
Строки разного цвета в ListBox Viteef Компоненты Delphi 1 09.05.2007 20:19
Строки в ListBox Ray1987 Компоненты Delphi 2 10.04.2007 00:57