Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2011.12.04;
Скачать: [xml.tar.bz2];

Вниз

Stringgrid   Найти похожие ветки 

 
Максон ©   (2011-03-29 12:49) [0]

Здравствуйте.
Столкнулся с такой проблемой. На форме 3 edit-a, 1 Combobox, 1stringGrid, 1button.
Суть вопроса: При каждом нажатии на кнопку данные из edit,combobox отображались в Stringgrid и добавлялась  новая строка.
Увы, у меня так не получается.
Подскажите, пожалуйста

procedure TForm2.addbtnClick(Sender: TObject);
var
 i:Integer;
begin
 strngrd1.RowCount:=0;
 strngrd1.RowCount:=strngrd1.RowCount+1; //Добавление строки
for i:=1 to (strngrd1.RowCount+1) do
 begin
   if strngrd1.Cells[0,i]="" then
   begin
      strngrd1.Cells[1,i]:=edt1.Text;
      strngrd1.Cells[2,i]:=edt2.Text;
      strngrd1.Cells[3,i]:=edt3.Text;
strngrd1.Cells[4,i]:=cbb1.Text;
      Exit;

     end;
     end;
end;

end.


 
Virgo_Style ©   (2011-03-29 13:11) [1]


> добавлялась  новая строка.


strngrd1.RowCount:=0;

вот здесь что происходит, как думаешь?


 
Максон ©   (2011-03-29 13:17) [2]


strngrd1.RowCount:=0;


видимо обнуление таблицы?


 
И. Павел ©   (2011-03-29 13:18) [3]

> for i:=1 to (strngrd1.RowCount+1) do

Тут будет выход за границы StringGrid.


 
И. Павел ©   (2011-03-29 13:22) [4]

> Exit;

нет, похоже что выхода за границы StringGrid все же не будет :)


 
И. Павел ©   (2011-03-29 13:24) [5]

Наверное, нужно как-то так:

procedure TForm2.addbtnClick(Sender: TObject);
begin
 strngrd1.RowCount:=strngrd1.RowCount + 1;
 strngrd1.Cells[1,strngrd1.RowCount-1]:=edt1.Text;
 strngrd1.Cells[2,strngrd1.RowCount-1]:=edt2.Text;
 strngrd1.Cells[3,strngrd1.RowCount-1]:=edt3.Text;
 strngrd1.Cells[4,strngrd1.RowCount-1]:=cbb1.Text;
end;


 
Юрий Зотов ©   (2011-03-29 13:28) [6]

> Максон ©   (29.03.11 12:49)  

Зачем цикл? Просто заполняем добавленную строку.

procedure TForm2.addbtnClick(Sender: TObject);
var
 i:Integer;
begin
 strngrd1.RowCount := strngrd1.RowCount+1; // Добавление строки
 i := strngrd1.RowCount-1; // Номер новой строки
 strngrd1.Cells[1,i]:=edt1.Text;
 strngrd1.Cells[2,i]:=edt2.Text;
 strngrd1.Cells[3,i]:=edt3.Text;
 strngrd1.Cells[4,i]:=cbb1.Text;
end;


 
Максон ©   (2011-03-29 16:13) [7]

Спасибо огромное, пригодилось, буду дальше воять свое приложение.


 
julia-julia ©   (2011-05-09 07:21) [8]

Помогите, пожалуйста. Нужно Заполнить ячейки StringGrid из Edit и MaskEdit, они расположенны на разных формах

procedure TForm1.BitBtn1Click(Sender: TObject);
var y: integer;
begin
stringgrid1.RowCount:=stringgrid1.RowCount+1;
Form2.ShowModal;
y:=StringGrid1.Row-1;
Form1.StringGrid1.Cells[1,y]:=Form2.Edit1.Text;
Form1.StringGrid1.Cells[2,y]:=Form2.MaskEdit2.Text;
Form1.StringGrid1.Cells[2,y]:=Form2.MaskEdit3.Text;
Form1.StringGrid1.Cells[4,y]:=Form2.MaskEdit4.Text;
end;


 
Anatoly Podgoretsky ©   (2011-05-09 08:55) [9]

> julia-julia  (09.05.2011 07:21:08)  [8]

Form1.StringGrid1.Cells[1,y]:=Form2.Edit1.Text;
Form1.StringGrid1.Cells[2,y]:=Form3.MaskEdit2.Text;
Form1.StringGrid1.Cells[2,y]:=Form4.MaskEdit3.Text;
Form1.StringGrid1.Cells[4,y]:=Form5.MaskEdit4.Text;

Но это не совсем верный дизайн, зависимый от внешних условий, надо все
свести к одной форме или хотя бы к свойствам класса.


 
julia-julia ©   (2011-05-09 09:38) [10]

Хм... Я, конечно, попробую, но все таки при возможности не хотела бы менять дизайн. А про сведение к свойствам класса можно узнать поподробней:)


 
Anatoly Podgoretsky ©   (2011-05-09 10:19) [11]

> julia-julia  (09.05.2011 09:38:10)  [10]

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


 
MsGuns ©   (2011-05-10 13:13) [12]

ИМХО, "знает" о том, что добавлять и что надо вообще добавлять, должна та форма, которая собственно и реализует этот ввод.
Поэтому следует, наверное сделать как-то так:

Форма вызывающая (Form1)
procedure TForm1.BitBtn1Click(Sender: TObject);
  var y: integer;
begin
  with TForm2.Create(Self) do
     begin
       sGrid := stringgrid1;
       iRow := -1;  // Добавление в конец
       ShowModal;
       Free;
     end;
end;


Форма с вводом:

TForm2 class (TForm)  

  private
    procedure ButtonOkClick(Sender: TObject);
       ...
  public
    sGrid: TStringGrid;
    iRow: unteger;    

       ...
procedure TForm2.ButtonOkClick(Sender: TObject);
var
  cRow: integer;
begin
  cRow := iRow;
  if cRow<0 then
    begin  // Добавить новую строку в конец сетки
     sGrid.RowCount := sGrid.RowCount + 1;  
     cRow := sGrid.RowCount - 1;
     sGrid.Row := cRow;  // Сделать добавленную строку текущей и видимой
    end;
  sGrid.Cells[1,cRow]:=Edit1.Text;
  sGrid.Cells[2,cRow]:=MaskEdit2.Text;
  sGrid.Cells[3,cRow]:=MaskEdit3.Text;
  sGrid.Cells[4,cRow]:=MaskEdit4.Text;
  Close;
end;


 
julia-julia ©   (2011-05-14 18:20) [13]

Файл создается в него записываются данные которые я ввожу в Edit и MaskEdit, но почему то только первые, если я введу другие то у меня появиться новая строка с новыми данными как и должно быть, но при этом еще и старые данные заменятся на новые. Где косяк опять у меня, посмотрите, пожалуйста.

procedure TForm1.BitBtn1Click(Sender: TObject);
//добавление записи из StringGrid в файлPoezd.txt
Var I : Byte;
   F : TextFile;
   S : String;
begin
StringGrid1.RowCount:=StringGrid1.RowCount+1;

 AssignFile(F, "Poezd.txt");
 Rewrite(F);
 For I := 0 to StringGrid1.RowCount - 1 do
 Begin
StringGrid1.Cells[0,I+1]:=Edit1.Text;
StringGrid1.Cells[1,I+1]:=MaskEdit1.Text;
StringGrid1.Cells[2,I+1]:=MaskEdit2.Text;
StringGrid1.Cells[3,I+1]:=MaskEdit3.Text;
S := StringGrid1.Cells[0,I] +" "+StringGrid1.Cells[1,I]+" "+StringGrid1.Cells[2,I]+" "+StringGrid1.Cells[3,I];
   Writeln(F,S)
 end;
 CloseFile(F)
end;


 
Palladin ©   (2011-05-14 20:36) [14]

прокомментируй каждую строчку и объясни чего ты хочешь


 
julia-julia ©   (2011-05-14 23:03) [15]

//Записать из StringGrid в файл
procedure TForm1.BitBtn1Click(Sender: TObject);
Var I : Byte;//Номер столбца
   F : TextFile;// Текстовый файл
   S : String;//Строка текстового файла
begin
 StringGrid1.RowCount:=StringGrid1.RowCount+1;//Создаем строку в StringGrid
 AssignFile(F, "Poezd.txt");//Установили связь с файлом
 Rewrite(F);//Перезаписали файл
 For I := 0 to StringGrid1.RowCount - 1 do //Проходим по всем строкам StringGrid
 Begin
// заполняем ячейки с помощь Edit и MaskEdit (соответственно)
StringGrid1.Cells[0,I+1]:=Edit1.Text;
StringGrid1.Cells[1,I+1]:=MaskEdit1.Text;
StringGrid1.Cells[2,I+1]:=MaskEdit2.Text;
StringGrid1.Cells[3,I+1]:=MaskEdit3.Text;
 S := StringGrid1.Cells[0,I] +" "+StringGrid1.Cells[1,I]+" "
 +StringGrid1.Cells[2,I]+" "+StringGrid1.Cells[3,I];//Преобразуем данные
//из StringGrig в файл

  Writeln(F,S)//Переписываем каждую строку в файл
 end;
 CloseFile(F) //Закрываем файл
end;


 
Palladin ©   (2011-05-14 23:41) [16]

) комментарии - твердая пятерка
теперь вопрос другой ) а Вы вообще знаете что такое - цикл for? )


 
julia-julia ©   (2011-05-14 23:54) [17]

Цикл с параметром, с шагом изменения счетчика 1


 
Palladin ©   (2011-05-15 00:12) [18]

то есть он повторяется от 0 до, скажем, 4, то есть пять раз, так?
от же самое значит что

StringGrid1.Cells[0,I+1]:=Edit1.Text;
StringGrid1.Cells[1,I+1]:=MaskEdit1.Text;
StringGrid1.Cells[2,I+1]:=MaskEdit2.Text;
StringGrid1.Cells[3,I+1]:=MaskEdit3.Text;

выполнится тоже 5 раз, и каждый раз с новым значением I, так?
какие выводы?


 
Palladin ©   (2011-05-15 02:17) [19]

надеюсь выводы его не парализовали и парень жив


 
Германн ©   (2011-05-15 06:17) [20]


> Palladin ©   (15.05.11 02:17) [19]
>
> надеюсь выводы его не парализовали и парень жив

Так тут уже два автора засветились. Думаю оба до сих пор живы.


 
КирилКА   (2011-08-13 14:48) [21]

Удалено модератором
Примечание: Offtopic


 
КирилКА   (2011-08-13 14:49) [22]

Удалено модератором
Примечание: Offtopic



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2011.12.04;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.51 MB
Время: 0.006 c
15-1312895553
Медвежонок Пятачок
2011-08-09 17:12
2011.12.04
Внимание здешним телепатам. Есть работа


15-1313170131
Leon-Z
2011-08-12 21:28
2011.12.04
Delphi 2007.


2-1313689507
Pcrepair
2011-08-18 21:45
2011.12.04
Как получить цвет пикселя из палитры BMP 8bit


15-1313092214
Медвежонок Пятачок
2011-08-11 23:50
2011.12.04
большой гудронный кошмайдер. комнатный вариант.


2-1313755879
Cobalt
2011-08-19 16:11
2011.12.04
проверка строки на соответсвие маске





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский