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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.11.2008, 15:23   #11
Xeon332
Скоро сессия...
Форумчанин
 
Регистрация: 03.01.2008
Сообщений: 224
По умолчанию

!!!!! Нашёл ошибку! вобщем вот так: когда вносишь данные по порядку в таблицу, а затем сохраняешь их в файл, и не закрывая программы пробуешь их удалить - удаляются без проблем, как надо. а когда повторно открываешь программу и загружаешь эти данные из файла и потом пробуешь их удалить, то удаляются выделенная строка и самая последняя... вот так. вроде потихоньку работает. но вот такая проблемка...
Xeon332 вне форума Ответить с цитированием
Старый 08.11.2008, 15:28   #12
slips
Форумчанин
 
Аватар для slips
 
Регистрация: 28.10.2008
Сообщений: 350
По умолчанию

Что значит "всё подряд удаляет... кроме фиксированной строки..."? Удаляемая строка у тебя определяется в StringGrid1SelectCell вот она и удалиться..
slips вне форума Ответить с цитированием
Старый 08.11.2008, 15:37   #13
Xeon332
Скоро сессия...
Форумчанин
 
Регистрация: 03.01.2008
Сообщений: 224
По умолчанию

Цитата:
Что значит "всё подряд удаляет... кроме фиксированной строки..."? Удаляемая строка у тебя определяется в StringGrid1SelectCell вот она и удалиться.
я разобрался почему всё подряд удаляет! теперь не всё подряд, а выделенную строку и самую последнюю.... в принципе проблемка... не разберусь пока никак...
Xeon332 вне форума Ответить с цитированием
Старый 08.11.2008, 15:42   #14
Xeon332
Скоро сессия...
Форумчанин
 
Регистрация: 03.01.2008
Сообщений: 224
По умолчанию

и удаление впринципе понял как делается!!!! НО!!! после загрузки из файла и удаления (правильного), появляется много новых строк и добавить новый контакт уже не получается... почему? подскажите
Xeon332 вне форума Ответить с цитированием
Старый 08.11.2008, 15:58   #15
slips
Форумчанин
 
Аватар для slips
 
Регистрация: 28.10.2008
Сообщений: 350
По умолчанию

Самая последняя удаляет вот из-за этого StringGrid1.RowCount:=Str-1;
А вот насчёт последнего я что то не понял...
slips вне форума Ответить с цитированием
Старый 08.11.2008, 19:16   #16
Xeon332
Скоро сессия...
Форумчанин
 
Регистрация: 03.01.2008
Сообщений: 224
По умолчанию

Цитата:
Самая последняя удаляет вот из-за этого StringGrid1.RowCount:=Str-1;
и исправить вобще можно это? я ещё пока не пробовал...

Цитата:
А вот насчёт последнего я что то не понял...
вобщем вот так: сохранил я в файл добавленные контакты. закрываю программу. потом заново её открываю, загружаю из файла сохранённые контакты, и пытаюсь удалить один контакт. он удаляется, НО после удаления создаётся большое количество новых строк, и далее нельзя уже добавить новых контактов... вот в чём проблема... какая строка кода это делает - не определил...

Последний раз редактировалось Xeon332; 08.11.2008 в 20:00.
Xeon332 вне форума Ответить с цитированием
Старый 09.11.2008, 03:58   #17
Xeon332
Скоро сессия...
Форумчанин
 
Регистрация: 03.01.2008
Сообщений: 224
По умолчанию

в таком виде код вообще не работает (удаялет всё подряд - все строки)... не пойму в чём причина
Код:
procedure TForm1.Button4Click(Sender: TObject);
  var YdalZap, i,KolStr,NumStr:integer;
begin
    YdalZap:=MessageDlg ('Вы уверены что хотите удалить запись?',mtwarning,[mbYes,mbNo],0);
    if (YdalZap=mrYes) then
       begin
        for i:=NumStrSel downto StringGrid1.RowCount-1 do
           begin
             StringGrid1.Cells [0,i]:=StringGrid1.Cells[0,i+1];
             StringGrid1.Cells [1,i]:=StringGrid1.Cells[1,i+1];
             StringGrid1.Cells [2,i]:=StringGrid1.Cells[2,i+1];
             StringGrid1.Cells [3,i]:=StringGrid1.Cells[3,i+1];
             StringGrid1.Cells [4,i]:=StringGrid1.Cells[4,i+1];

           end;

        KolStr:=KolStr-1;
         if KolStr<0 then  // Кол-во строк не должно быть отрецательным
          KolStr:=0;

       NumStr:=NumStr-1;
       if NumStr<0 then  // Номер строки не должен быть отрицательным
         NumStr:=1;

       StringGrid1.RowCount:=KolStr;
       end;

end;
Xeon332 вне форума Ответить с цитированием
Старый 09.11.2008, 14:52   #18
Alter
Старожил
 
Аватар для Alter
 
Регистрация: 06.08.2007
Сообщений: 2,183
По умолчанию

т.к тупик, напишу:
Добавить строку в указанную позицию StringGrid:
Код:
procedure SGInsertRow(SG: TStringGrid; NewRow: Integer);
var
  i: Integer;
begin
  if NewRow < 0 then
    NewRow := 0; // либо 1, задайте нужное вам поведение
  with SG do
  begin
    RowCount := RowCount + 1;
    if NewRow < RowCount - 1 then
    begin
      for i := RowCount - 1 downto NewRow + 1 do
        Rows[i].Assign(Rows[i - 1]);
    end;
    Rows[NewRow].Clear;
  end;
end;
Удалить указанную строку:
Код:
procedure TForm1.Button3Click(Sender: TObject);
var
  i,j: Integer;
begin
  j:=SG1.Row; // строка с выделением
  SG1.Rows[j].Clear;
  for i:=j to SG1.RowCount-2 do
    SG1.Rows[i].Assign(SG1.Rows[i+1]);
  SG1.RowCount:=SG1.RowCount-1;
end;
Alter вне форума Ответить с цитированием
Старый 11.11.2008, 15:55   #19
Xeon332
Скоро сессия...
Форумчанин
 
Регистрация: 03.01.2008
Сообщений: 224
По умолчанию

пока всё разжевалось... все заработало впринципе. есть один косячок при выполнении поиска.
вобщем поиск работает, ищет,но! ищет не по всем строкам, а некоторые выбирает и их отображает (например Иванова нашёл, и Петрова не ищет, хотя я ввел его для поиска)

вот этот код, посмотрите плиз как этот косяк можно исправить....

Код:
procedure TForm3.Button1Click(Sender: TObject);
var
  i: Integer;
 GRect: TGridRect;
 begin
  for i := 1 to Str-1 do  // организуется цикл
    if Edit1.Text=Form1.StringGrid1.Cells[0,i] then  // проверка условия
     begin  // если совпадение, то выделение ячейки
      GRect.Left:=0;
      GRect.Top:=i;
      GRect.Right:=1; // указывает на то, какую ячейку выделять
      GRect.Bottom:=i;
      Form1.StringGrid1.Selection:=GRect;
      Form1.StringGrid1.LeftCol:=4;  // указывает номер строки выделения
      Form1.StringGrid1.TopRow:=i;
     end;
close;// закрытие
end;

// организация поиска по телефону
procedure TForm3.Button2Click(Sender: TObject);
var
  I: Integer;
 GRect: TGridRect;
 begin
  for i := 1 to Str-1 do  // организуется цикл
    if Edit2.Text=Form1.StringGrid1.Cells[3,i] then  // проверка условия
     begin
      GRect.Left:=0;  // регион выделенных ячеек
      GRect.Top:=i;
      GRect.Right:=3; // указывают на то, какую ячейку выделять
      GRect.Bottom:=i;
      Form1.StringGrid1.Selection:=GRect;  // выбор ячеек
      Form1.StringGrid1.LeftCol:=0; // указывает номер строк выделения
      Form1.StringGrid1.TopRow:=i;
     end;
close; // закрытие
end;

// организация поиска по адресу
procedure TForm3.Button3Click(Sender: TObject);
var
  i: Integer;
 GRect: TGridRect;
 begin
  for I := 1 to Str-1 do
    if Edit3.Text=Form1.StringGrid1.Cells[4,i] then   // проверка условия
     begin
      GRect.Left:=0;
      GRect.Top:=i;
      GRect.Right:=4;
      GRect.Bottom:=i;
      Form1.StringGrid1.Selection:=GRect;
      Form1.StringGrid1.LeftCol:=0;
      Form1.StringGrid1.TopRow:=i;
     end;
 close;  // закрытие
 end;
end.
Xeon332 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вставка/удаление из строки. t3ns0r Общие вопросы C/C++ 3 11.10.2008 17:58
Удаление конкретной строки Memo JakSon Общие вопросы Delphi 6 03.03.2008 09:35
Удаление строки из файла Македонский Общие вопросы Delphi 5 29.08.2007 15:40
Полное удаление строки Albenous Общие вопросы Delphi 2 15.01.2007 21:54