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

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

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.10.2015, 15:46   #1
alexazov
Новичок
Джуниор
 
Регистрация: 19.10.2015
Сообщений: 2
Печаль не все эдиты работают

помогите разобраться с исходником по заполнению шаблона. в чужом исходнике было 7 эдитов. я на форму добавил ещё 20 - это необходимо для моей программы. но но информация с полей отображается только до эдит 9 т.е. в том и с 2х моих а с остальных нет.только последние цифры. т.е. в шаблоне едит 25 - в документе ворд только последняя цифра 5 на месте вводимой информации.вот как в исходнике чужом построена работа с эдит
Код:
begin                        // цикл по всем компонентам формы
 for i:=Form1.ComponentCount-1 downto 0 do
  begin
   temp:=Components[i];
   if (Temp is TEdit)
   then TEdit(Components[i]).Text:='';
   if (Temp is TComboBox)
   then TComboBox(Components[i]).Text:='';
   if Temp is TMemo
   then TMemo(Components[i]).Lines.Clear;
   if Temp is TMaskEdit
   then TMaskEdit(Components[i]).Text:='';
  end;

Последний раз редактировалось Stilet; 19.10.2015 в 16:06.
alexazov вне форума Ответить с цитированием
Старый 19.10.2015, 16:01   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

А че за код подсунул, какое отношение он имеет к вопросу?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 19.10.2015, 16:25   #3
alexazov
Новичок
Джуниор
 
Регистрация: 19.10.2015
Сообщений: 2
Печаль

Код:
...........
procedure TForm1.ReqSave(Sender: TObject);
begin
 if Trim(ComboBox1.Text)='' then Exit;
 ReqOpen(Sender);
 Table2.First;
 if not(Table2.Locate('Name',ComboBox1.Text,[LoCaseInsensitive])) then
  begin
   Table2.Last;
   Table2.Insert;
   Table2.FieldValues['Name']:=ComboBox1.Text;
   Table2.FieldValues['Address']:=Edit3.Text;
   Table2.FieldValues['Telephone']:=Edit4.Text;
   Table2.FieldValues['Director']:=Edit7.Text;
    Table2.FieldValues['Director']:=Edit26.Text;
   Table2.Post;
   ReqLoad(Sender);
  end;
 Table2.Close;
end;

.............
 Table2.First;
 if Table2.Locate('Name',ComboBox1.Text,[]) then
  begin
   Edit3.Text:=Table2.FieldValues['Address'];
   Edit4.Text:=Table2.FieldValues['Telephone'];
   Edit7.Text:=Table2.FieldValues['Director'];

   Exit;
  end;
end;

procedure TForm1.DataSource1DataChange(Sender: TObject; Field: TField);
begin
.........
procedure TForm1.SaveDocumentAs(Name: string);
 function FieldExists(name: string):Boolean;
 var
  i: integer;
 begin
  FieldExists:=false;
  for i:=0 to Form2.ListBox1.Items.Count-1 do
   begin
    if Name=UpperCase(Form2.ListBox1.Items[i]) then
     begin
      FieldExists:=true;
      Exit;
     end;
   end;
 end;
Label 1;
var
 st: string;
 i: Integer;
 Temp: TComponent;
 Buf: array [0..150] of Char;
begin
 Table1.Active:=false;
 Table1.TableName:=GetProgramPath+'data\'+'AllReq.db';
 if not (FileExists(GetProgramPath+'data\'+'AllReq.db')) then
 begin // создание новой базы
  Table1.Active:=false;
  Table1.TableName:=GetProgramPath+'data\'+'AllReq.db';
  if not Table1.Exists then
   begin
    with Table1.FieldDefs do
     begin
      Clear;
      with AddFieldDef do
       begin
        Name:='DocName';
        DataType:=ftString;
        Size:=240;
       end;
      for i:=Form1.ComponentCount-1 downto 0 do
       begin
        Temp:=Components[i];
        if (Temp is TEdit) or (Temp is TComboBox) then
         with AddFieldDef do
          begin
           Name:=TControl(Temp).Name;
           DataType:=ftString;
           Size:=200;
          end;
        if (Temp is TMaskEdit) then
         with AddFieldDef do
          begin
           Name:=TControl(Temp).Name;
           DataType:=ftString;
           Size:=20;
          end;
        if (Temp Is TMemo) then
         with AddFieldDef do
          begin
           Name:=TControl(Temp).Name;
           DataType:=ftMemo;
           Size:=500;
          end;
        end;
       Table1.CreateTable;
     end;
    Table1.Open;
  end;
 end;

 Table1.Active:=true;
 Table1.Open;
 Table1.First;
 Form2.ListBox1.Items.BeginUpdate;
 Form2.ListBox1.Items.Clear;
  while not (Table1.Eof) do
   begin
    Form2.ListBox1.Items.Add(Table1.Fields[0].AsString);
    Table1.Next;
   end;
 Form2.ListBox1.Items.EndUpdate;
 st:=Name;
 1:
  st:=InputBox('Сохранение','Введите название:','');
   begin
    if FieldExists(Uppercase(st)) then
     begin
      StrPCopy(Buf,'Заменить существующий '+st);
      i:=Application.MessageBox(Buf,'',MB_YESNO);
      if i=IDYES then
       begin
        DocName:=st;
       end
      else
       goto 1;
     end
    else DocName:=st;
    SaveDocument;
   end;
end;
................
procedure TForm1.LoadDocument(Const name: string);
var
 i: integer;
 temp: TComponent;
begin
 Table1.Open;
 Table1.First;
 while not (Table1.Eof) do
  begin
   if UpperCase(name)=UpperCase(Table1.Fields[0].AsString) then
    begin
     for i:=Form1.ComponentCount-1 downto 0 do
      begin
       Temp:=Components[i];
       if (Temp is TEdit) or (Temp is TComboBox)
       then TCustomEdit(Temp).Text:=Table1.Fieldbyname(TControl(Temp).Name).AsString;
       if (Temp is TMaskEdit)
       then TMaskEdit(Temp).Text:=Table1.Fieldbyname(TControl(Temp).Name).AsString;
       if (Temp Is TMemo)
       then TMemo(Temp).Text:=Table1.Fieldbyname(TControl(Temp).Name).AsString;
      end;
     DocName:=Name;
     Table1.Close;
     Exit; // выход
    end;
   Table1.Next;
  end;
 ShowMessage('Неверное имя документа или база данных повреждена!');
 if Table1.Active then Table1.Close;
end;

procedure TForm1.ClearAllFields(Sender: TObject);
var
 i: Longint;
 temp: TComponent;
begin                        // цикл по всем компонентам формы
 for i:=Form1.ComponentCount-1 downto 0 do
  begin
   temp:=Components[i];
   if (Temp is TEdit)
   then TEdit(Components[i]).Text:='';
   if (Temp is TComboBox)
   then TComboBox(Components[i]).Text:='';
   if Temp is TMemo
   then TMemo(Components[i]).Lines.Clear;
   if Temp is TMaskEdit
   then TMaskEdit(Components[i]).Text:='';
  end;
 SaveTo:='';
end;
это чужой исходник я ничего не менял только на форму добваил 20 эдитов но из моих работают только два 8 и 9 (в программе их 7 родных) а остальные нет

Последний раз редактировалось Stilet; 19.10.2015 в 16:42.
alexazov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работают не все колонки на буфере 5+1 tatarrr Компьютерное железо 1 03.08.2011 00:27
Как создавать эдиты и шейпы по нажатию кнопки Donim Общие вопросы Delphi 5 29.05.2011 19:38
Заполнение бд через эдиты и кнопку Elementig Общие вопросы Delphi 0 07.04.2011 19:23
Jquery, все скрипыт почему-то не работают в ie7 92avenu JavaScript, Ajax 6 09.03.2011 22:15
Установка XP на SATA и все-все-все Alex Cones Операционные системы общие вопросы 5 16.03.2010 17:07