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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.05.2008, 17:20   #1
monushka
Форумчанин
 
Аватар для monushka
 
Регистрация: 26.10.2007
Сообщений: 112
По умолчанию StringGrid, ComboBox...

Добрый день! У меня следующая проблема. Имеется форма с тремя ComboBox'ами, Memo и StringGrid'ом. В КомбоБоксах выбираются определенные значения, в мемо вводятся комментарии, а затем при нажатии на кнопку "Добавить" все выбранные и введенные значения должны добавиться в СтрингГрид. Как сделать так, что бы при каждом нажатии на Добавить, в СтрингГрид добавлялась новая строка с данными. Я сделала так:
Код:
k:=1;
if SG1.RowCount <= k then
SG1.RowCount:=SG1.RowCount+1;
for i:=k to SG1.RowCount do
 begin
 SG1.Cells[0,k]:=DateToStr(DateTimePicker1.DateTime);
 SG1.Cells[1,k]:=ComboBox1.Text+#13+ComboBox2.Text;
 SG1.Cells[5,k]:=ComboBox3.Text;
 SG1.Cells[8,k]:=Memo1.Text;
 SG1.Visible:=True;
 k:=k+1;
 end;
но при этом при каждом нажатии на Добавить все данные копируются в одну и ту же строку. Не могу понять где проблема... Помогите, пожалуйста!
И еще КомбоБокс... Как в айтим добавлять значение с пробелом так, чтобы оно не разбивалось на разные айтимы? Например, если ввести так
Код:
ComboBox3.Items.CommaText:='Жуковская Галина Михайловна';
то в результате КомбоБокс будет иметь три айтима, а должен быть один.
Как это можно реализовать?
Вот. Спасибо!
If you wanna make the world a better place take a look at yourself and then make a change!
monushka вне форума Ответить с цитированием
Старый 02.05.2008, 17:58   #2
Hollander
Участник клуба
 
Аватар для Hollander
 
Регистрация: 03.05.2007
Сообщений: 1,189
По умолчанию

1 вопрос: Мот надо так:
Код:
for i:=k to SG1.RowCount do   
 begin   
 SG1.Cells[0,i]:=DateToStr(DateTimePicker1.DateTime);   
 SG1.Cells[1,i]:=ComboBox1.Text+#13+ComboBox2.Text;   
 SG1.Cells[5,i]:=ComboBox3.Text;   
 SG1.Cells[8,i]:=Memo1.Text;   
 SG1.Visible:=True;   
 end;
2 вопрос: попробуй:
ComboBox3.Items.Add('Жуковская Галина Михайловна');
Hollander вне форума Ответить с цитированием
Старый 02.05.2008, 18:12   #3
monushka
Форумчанин
 
Аватар для monushka
 
Регистрация: 26.10.2007
Сообщений: 112
По умолчанию

Вот на 2 вопрос Вы мне подсказали, работает, СПАСИБО! А вот с первым... Все точно так же копируется в одну строку((( ЧЁ-то кажется мне, что проблема с наращиванием этих строк...
If you wanna make the world a better place take a look at yourself and then make a change!
monushka вне форума Ответить с цитированием
Старый 02.05.2008, 18:17   #4
Hollander
Участник клуба
 
Аватар для Hollander
 
Регистрация: 03.05.2007
Сообщений: 1,189
По умолчанию

Вообще сделай так:
Код:
SG1.RowCount:=SG1.RowCount+1;   
 SG1.Cells[0,SG1.RowCount]:=DateToStr(DateTimePicker1.DateTime);   
 SG1.Cells[1,SG1.RowCount]:=ComboBox1.Text+#13+ComboBox2.Text;   
 SG1.Cells[5,SG1.RowCount]:=ComboBox3.Text;   
 SG1.Cells[8,SG1.RowCount]:=Memo1.Text;
Я просто не могу понять зачем тебе цикл здесь нужен
Hollander вне форума Ответить с цитированием
Старый 02.05.2008, 18:41   #5
monushka
Форумчанин
 
Аватар для monushka
 
Регистрация: 26.10.2007
Сообщений: 112
По умолчанию

О, уже похоже на правду. Спасибо! Вот только наращивание надо делать в конце, а то приходится нажимать два раза на кнопку, чтобы добавились данные. Но есть еще один момент. Первая строка после фиксированой остается пустой. Т.е. добавляется начиная со второй строки.
Если придать SG1.RowCount:=1, то тогда фиксированая первая строка становится нефиксированой, это плохо. А как иначе, я не знаю...
If you wanna make the world a better place take a look at yourself and then make a change!
monushka вне форума Ответить с цитированием
Старый 02.05.2008, 18:53   #6
ACE Valery
Сама себе режиссер
Старожил
 
Аватар для ACE Valery
 
Регистрация: 27.04.2007
Сообщений: 3,365
По умолчанию

Цитата:
Сообщение от monushka Посмотреть сообщение
Первая строка после фиксированой остается пустой. Т.е. добавляется начиная со второй строки.
хм... ну попробуйте вот так

Объявите глобальную переменную kol типа integer.
В FormCreate инициализируйте ее значением 1.
На кнопке Добавить пропишите:
Код:
  sg1.RowCount:=kol+1;
 SG1.Cells[0,kol]:=DateToStr(DateTimePicker1.DateTime);
 SG1.Cells[1,kol]:=ComboBox1.Text+#13+ComboBox2.Text;
 SG1.Cells[2,kol]:=ComboBox3.Text;
 SG1.Cells[3,kol]:=Memo1.Text;
 kol:=sg1.RowCount;
Работает, вроде, прилично.
Если я вас напрягаю или раздражаю, вы всегда можете забиться в угол и поплакать

Последний раз редактировалось ACE Valery; 02.05.2008 в 19:04.
ACE Valery вне форума Ответить с цитированием
Старый 02.05.2008, 19:00   #7
monushka
Форумчанин
 
Аватар для monushka
 
Регистрация: 26.10.2007
Сообщений: 112
По умолчанию

Хм... Таки да... Но все равно спасибо большое за помощь! Может у кого-то еще появятся какие-то идеи на этот счет...
If you wanna make the world a better place take a look at yourself and then make a change!
monushka вне форума Ответить с цитированием
Старый 02.05.2008, 19:05   #8
ACE Valery
Сама себе режиссер
Старожил
 
Аватар для ACE Valery
 
Регистрация: 27.04.2007
Сообщений: 3,365
По умолчанию

Цитата:
Сообщение от monushka Посмотреть сообщение
Хм... Таки да... Но все равно спасибо большое за помощь! Может у кого-то еще появятся какие-то идеи на этот счет...
Посмотрите, пожалуйста, мое предыдущее сообщение, я исправила. Теперь все работает
Если я вас напрягаю или раздражаю, вы всегда можете забиться в угол и поплакать
ACE Valery вне форума Ответить с цитированием
Старый 02.05.2008, 19:34   #9
monushka
Форумчанин
 
Аватар для monushka
 
Регистрация: 26.10.2007
Сообщений: 112
По умолчанию

ACE Valery, так совсем не работает. Все копируется в одну строку, как было у меня раньше... Может, конечно, я чЁ-то не поняла, но не работает. Спасибо за помощь!
If you wanna make the world a better place take a look at yourself and then make a change!
monushka вне форума Ответить с цитированием
Старый 02.05.2008, 19:39   #10
ACE Valery
Сама себе режиссер
Старожил
 
Аватар для ACE Valery
 
Регистрация: 27.04.2007
Сообщений: 3,365
По умолчанию

Цитата:
Сообщение от monushka Посмотреть сообщение
ACE Valery, так совсем не работает. Все копируется в одну строку, как было у меня раньше... Может, конечно, я чЁ-то не поняла, но не работает. Спасибо за помощь!
Вот полный текст программы. Сверяйте со своим

Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ComCtrls, StdCtrls, Grids;

type
  TForm1 = class(TForm)
    SG1: TStringGrid;
    Button1: TButton;
    ComboBox1: TComboBox;
    ComboBox2: TComboBox;
    ComboBox3: TComboBox;
    Memo1: TMemo;
    DateTimePicker1: TDateTimePicker;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  kol:integer;

implementation
{$R *.dfm}


procedure TForm1.Button1Click(Sender: TObject);
begin
 sg1.RowCount:=kol+1;
 SG1.Cells[0,kol]:=DateToStr(DateTimePicker1.DateTime);
 SG1.Cells[1,kol]:=ComboBox1.Text+#13+ComboBox2.Text;
 SG1.Cells[2,kol]:=ComboBox3.Text;
 SG1.Cells[3,kol]:=Memo1.Text;
 kol:=sg1.RowCount;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
kol:=1;
end;

end.
Если я вас напрягаю или раздражаю, вы всегда можете забиться в угол и поплакать
ACE Valery вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Combobox Yana Помощь студентам 5 23.12.2007 02:16
Не могу внести строку из combobox в combobox!? tacer Помощь студентам 1 30.11.2007 19:45
Вставка в stringgrid combobox-а. Иван1 Компоненты Delphi 3 25.05.2007 09:12