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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.06.2010, 19:52   #1
Ежик
Пользователь
 
Регистрация: 23.04.2010
Сообщений: 12
Смущение открывающийся список stringrid

Добрый день. Помогите плиз. как можно реализовать открыввающийся список для ячейки в sringrid. заранее благодарю
Ежик вне форума Ответить с цитированием
Старый 26.06.2010, 20:57   #2
ImmortalAlexSan
Участник клуба
 
Аватар для ImmortalAlexSan
 
Регистрация: 13.01.2009
Сообщений: 1,353
По умолчанию

Попробуйте скомпоновать стринггрид и комбобокс, поищите в свойствах стринггрида свойство выделенное красным, и если в его выпадающем списке будет присутствовать комбобокс, отмечайте его, и проверьте запустив программу.
P.S. Всего лишь предположение.
"Тебе то может на меня и насрать, но твои глаза меня обожают!"
ImmortalAlexSan вне форума Ответить с цитированием
Старый 26.06.2010, 21:22   #3
savva
Форумчанин
 
Регистрация: 10.06.2010
Сообщений: 225
По умолчанию

а просто listbox какой-нибудь замутить никак??

зачем обязательно делать через стринггрид?что за жестокие ограничения?:
За помощь: Нажмите на весы слева от сообщения!
savva вне форума Ответить с цитированием
Старый 26.06.2010, 21:23   #4
Ежик
Пользователь
 
Регистрация: 23.04.2010
Сообщений: 12
По умолчанию

Цитата:
Сообщение от ImmortalAlexSan Посмотреть сообщение
Попробуйте скомпоновать стринггрид и комбобокс, поищите в свойствах стринггрида свойство выделенное красным, и если в его выпадающем списке будет присутствовать комбобокс, отмечайте его, и проверьте запустив программу.
P.S. Всего лишь предположение.
Спасибо за внимание но не получается к сожалению((
Ежик вне форума Ответить с цитированием
Старый 26.06.2010, 21:26   #5
Ежик
Пользователь
 
Регистрация: 23.04.2010
Сообщений: 12
По умолчанию

Цитата:
Сообщение от savva Посмотреть сообщение
а просто listbox какой-нибудь замутить никак??

зачем обязательно делать через стринггрид?что за жестокие ограничения?:
мне нужно подобие таблице с изменяемым количеством строк, а для одного столбца возможность выбора значения для ячейки из списка. как иначе организовать как не в stringgride незнаю
Ежик вне форума Ответить с цитированием
Старый 26.06.2010, 22:02   #6
Ежик
Пользователь
 
Регистрация: 23.04.2010
Сообщений: 12
По умолчанию

ааааа все вопрос закрыт
Ежик вне форума Ответить с цитированием
Старый 26.06.2010, 23:09   #7
Ежик
Пользователь
 
Регистрация: 23.04.2010
Сообщений: 12
По умолчанию

вот такой возможен вариант решения.....

procedure TForm1.FormCreate(Sender: TObject);
begin
{Высоту у combobox не получится установить, поэтому мы будем}
{подгонять размер у грида под размер combobox!}
StringGrid1.DefaultRowHeight := ComboBox1.Height;
{Скрываем combobox}
ComboBox1.Visible := False;
end;

procedure TForm1.ComboBox1CloseUp(Sender: TObject);
begin
{Получаем выбранный элемент из ComboBox и помещаем его в грид}
StringGrid1.Cells[StringGrid1.Col, StringGrid1.Row] := ComboBox1.Items[ComboBox1.ItemIndex];
ComboBox1.Visible := False;
StringGrid1.SetFocus;
end;

procedure TForm1.ComboBox1Exit(Sender: TObject);
begin
{Получаем выбранный элемент из ComboBox и помещаем его в грид}
StringGrid1.Cells[StringGrid1.Col, StringGrid1.Row] := ComboBox1.Items[ComboBox1.ItemIndex];
ComboBox1.Visible := False;
StringGrid1.SetFocus;
end;

procedure TForm1.StringGrid1SelectCell(Sender : TObject; Col,
Row: Integer; var CanSelect: Boolean);
var
R: TRect;
begin
SGWriteRead.SendToBack;
if ((Col = 3) AND
(Row <> 0)) then begin
{Размер и расположение combobox подгоняем под ячейку}
R := StringGrid1.CellRect(Col, Row);
R.Left := R.Left + StringGrid1.Left;
R.Right := R.Right + StringGrid1.Left;
R.Top := R.Top + StringGrid1.Top;
R.Bottom := R.Bottom + StringGrid1.Top;
ComboBox1.Left := R.Left + 1;
ComboBox1.Top := R.Top + 1;
ComboBox1.Width := (R.Right + 1) - R.Left;
ComboBox1.Height := (R.Bottom + 1) - R.Top;
//Определяем индекс
ComboBox1.ItemIndex := ComboBoxNumIndex(StringGrid1.Cells[3, ARow], ComboBox1.Items.Text);
//Показываем СomboBox
ComboBox1.Visible := True;
ComboBox1.SetFocus;
end;
CanSelect := True;
end;

// Ставим ComboBox в позицию текста который отбражен в StringGrid-е
Function ComboBoxNumIndex(TextGrid, TextCombo : String): Integer;
var
NumIndex: Integer;
begin
NumIndex := 0;
while Pos(#13#10, TextCombo) <> 0 do
begin
if Copy(TextCombo, 0, Pos(#13#10, TextCombo)-1) = TextGrid then break
else
begin
NumIndex := NumIndex + 1;
TextCombo := Copy(TextCombo, Pos(#13#10, TextCombo)+2, Length(TextCombo));
end;
end;
ComboBoxNumIndex := NumIndex;
end;
Ежик вне форума Ответить с цитированием
Старый 26.06.2010, 23:12   #8
savva
Форумчанин
 
Регистрация: 10.06.2010
Сообщений: 225
По умолчанию

эм, сделай допустим такую штуку

на двойной щелчёк по ячейки всплывала новая форма с нужным компонентом будь то listbox или что либо другое.
форму естественно делаешь маленькую и все.
За помощь: Нажмите на весы слева от сообщения!
savva вне форума Ответить с цитированием
Старый 26.06.2010, 23:22   #9
Ежик
Пользователь
 
Регистрация: 23.04.2010
Сообщений: 12
По умолчанию

Цитата:
Сообщение от savva Посмотреть сообщение
эм, сделай допустим такую штуку

на двойной щелчёк по ячейки всплывала новая форма с нужным компонентом будь то listbox или что либо другое.
форму естественно делаешь маленькую и все.
я сначала хотел так сделать но решил остановится на combobox-е. так вроде не плохо. осталось картинки впихнуть как нибудь
Ежик вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
объясните StrinGrid magnat1991 Общие вопросы C/C++ 9 26.04.2010 14:50
StrinGrid в Delphi TaYgA Помощь студентам 8 19.10.2009 17:17
StrinGrid Настенька..Блонди Общие вопросы Delphi 2 15.08.2009 16:45
Задача со StrinGrid-ом artemavd Общие вопросы Delphi 10 28.07.2009 16:23