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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.10.2012, 09:50   #1
TIXIY
Пользователь
 
Регистрация: 07.05.2012
Сообщений: 14
По умолчанию работа со StringGrid

Задание:
1) Программно считать из файла table_param.txt параметры таблицы: имена столбцов и номер столбца, тип которого будет comdoBox. Имена столбцов указываются на первой строке и разделены одним знаком табуляции. На следующей строке указывается одна цифра – указывающая номер столбца (в примере это столбец 0).
2) Форма с таблицей должна иметь примерный вид как на Рисунке 1.

3) Кнопки «+» и «-» соответственно вставляют и удаляют строку в таблице. Должна быть возможность удалять несколько строк одновременно и вставлять строку в конец таблицы или в середину после выделенной.
4) Кнопка «Отмена» закрывает форму без выполнения каких либо действий.
Изображения
Тип файла: jpg Безымянный.jpg (33.5 Кб, 120 просмотров)
TIXIY вне форума Ответить с цитированием
Старый 07.10.2012, 09:51   #2
TIXIY
Пользователь
 
Регистрация: 07.05.2012
Сообщений: 14
По умолчанию

Народ помогите пожалуйста..=))))
TIXIY вне форума Ответить с цитированием
Старый 07.10.2012, 14:03   #3
TIXIY
Пользователь
 
Регистрация: 07.05.2012
Сообщений: 14
По умолчанию

я нашел что то похоже как считать с файла, но у меня выдает ошибку на load stringgrid
Код:
procedure TForm1.Button3Click(Sender: TObject);
begin
 LoadStringGrid(StringGrid1, 'c:\table_param.txt');
 ShowMessage('Load done.');
end;

procedure LoadStringGrid(StringGrid: TStringGrid; const FileName: TFileName);
 var
   f:          TextFile;
   iTmp, i, k: Integer;
   strTemp:    String;
 begin
   AssignFile(f, filename);
   Reset(f);
   with StringGrid do
   begin
     // Get number of columns
    Readln(f, iTmp);
     ColCount := iTmp;
     // Get number of rows
    Readln(f, iTmp);
     RowCount := iTmp;
     // loop through cells & fill in values
    for i := 0 to ColCount - 1 do
       for k := 0 to RowCount - 1 do
       begin
         Readln(f, strTemp);
         strTemp := StringReplace(strTemp, '$@$', #13#10, [rfReplaceAll, rfIgnoreCase]);
         Cells[i, k] := strTemp;
       end;
   end;
   CloseFile(f);
 end;
TIXIY вне форума Ответить с цитированием
Старый 08.10.2012, 06:55   #4
TIXIY
Пользователь
 
Регистрация: 07.05.2012
Сообщений: 14
По умолчанию

народ что никто даже не может подсказать.+))))
TIXIY вне форума Ответить с цитированием
Старый 08.10.2012, 11:08   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

похоже, что код LoadStringGrid написан на форуме мной.
а не получается у вас его использовать, скорее всего потому, что ваш текстовый файл (этот ваш 'c:\table_param.txt' ) имеет совершенно другую структуру
LoadStringGrid загружает данные из файла, сохранённые через SaveStringGrid

как минимум выложите сюда на форум свой файлик 'c:\table_param.txt'
это раз.

второе. а каким образом Вы в своём стрингриде создаёте ComboBox? (исходный код создания приведите)

третье. в чём у вас сложность с добавлением строки? и тот же вопрос - что с удалением не получается?



Вы свой проект (явно учебный, кстати) не выложили, в одну кучу смешали все свои проблемы и теперь надеятесь на чудо...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 09.10.2012, 06:57   #6
TIXIY
Пользователь
 
Регистрация: 07.05.2012
Сообщений: 14
По умолчанию

Я Добавление сделал но оно добавляет только в конец строки,но не знаю как сделать чтобы и в середину можно было добавить. Удаление не могу реализовать и чтобы можно было удалять сразу несколько строк.

Насчет ComboBox сам не знаю как это сделать поэтому и спрашиваю.
Вложения
Тип файла: txt table_param.txt (61 байт, 127 просмотров)
TIXIY вне форума Ответить с цитированием
Старый 09.10.2012, 09:04   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
но не знаю как сделать чтобы и в середину можно было добавить
а всё просто.
допустим, надо вставить новую строчку в строку с номером K.
Тогда добавляете пустую строчку в конец.
все строчки начиная с K и до конца сдвигаете на одну.
n копируете в n+1
n-1 копируете в n
и т.д.
k -> k+1
в k строчку записываете новые данные.

задача решена. вставлена новая строчка в строку K

Цитата:
Насчет ComboBox сам не знаю как это сделать поэтому и спрашиваю.
оп! я не вижу, где вы спрашиваете, как в StringGrid добавить комбобокс?! это ваш пункт 2), что ли?!

поищите, на форуме были примеры, как в стринггрид можно добавить комбобокс.
найдёте, вставите себе. убедитесь, что всё работает. опубликуете здесь свой рабочий код, вот тогда мы и приступим к загрузке вашего table_param.txt

я же правильно понимаю, сейчас у вас вообще никакого работающего кода нет?!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 09.10.2012, 16:07   #8
TIXIY
Пользователь
 
Регистрация: 07.05.2012
Сообщений: 14
Хорошо

я тут посидел, почитал, посмотрел, поискал и подумал и написал..=))) но проблема теперь стоит в том что я не могу сделать так чтобы у меня удалялась строка та на которой стоит курсор или выбрана строка, не могу неаписать код чтобы он определял позицию..=))))))

а Так огромное спасибо за поддержку и за помошь, приятно когда люди стараються тебе помочь..=)))))
TIXIY вне форума Ответить с цитированием
Старый 09.10.2012, 16:37   #9
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

зря Вы с этим TStringGrid связались.. у меня порой такое чувство, что этот компонент у индусов украли...

попробуйте на кнопку удаления повесить такой код:
Код:
procedure TForm1.btDeleteRowClick(Sender: TObject);
var i, k : integer;
begin
    // сначала скопируем все строчки на место удаляемой
    k := StringGrid1.Row;
    for i:= k to StringGrid1.RowCount-2 do
       StringGrid1.Rows[i] := StringGrid1.Rows[i+1];

    // а теперь удалим последнюю строчку грида
    StringGrid1.RowCount := StringGrid1.RowCount - 1;
end;
Serge_Bliznykov вне форума Ответить с цитированием
Старый 09.10.2012, 16:50   #10
TIXIY
Пользователь
 
Регистрация: 07.05.2012
Сообщений: 14
По умолчанию

да мне тоже не нравиться этот Stringgrid, он мне весь мозг вынес..=0))))

кстати все работает великолепно, я проверил..=))) спасибо огроменное, меня реально выручил..=)))))))
TIXIY вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа со Stringgrid Эммануэль Помощь студентам 3 18.05.2011 08:49
Работа с StringGrid Unique Общие вопросы Delphi 4 13.09.2010 03:24
работа с stringgrid SVA90 Общие вопросы Delphi 7 17.05.2010 19:14
Работа со StringGrid Neroaz Помощь студентам 3 29.03.2010 13:31
Работа с StringGrid aleks_grey Компоненты Delphi 2 28.10.2007 07:08