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

Вниз

Не присваиваеться значение Элементу массива объектов Tedit   Найти похожие ветки 

 
iles ©   (2006-02-22 12:35) [0]

Всем доброго дня.
Задача:
На форме объект PageControl, в нем два листа в каждом из которых динамически прорисовываються объекты Tedit в виде сетки, 24 строки по 8 столбцов:

type
   TEdits =  array[1..8,1..24] of TEdit;

var
 Form1: TForm1;
 EditsArray_1: TEdits;
 EditsArray_2: TEdits;

function TForm1.GetColumnWidth(Column: Integer): Integer;
begin
    case Column of
      1:  Result := 33;
      2:  Result := 225;
      3:  Result := 89;
      4:  Result := 89;
      5:  Result := 89;
      6:  Result := 161;
      7:  result := 49;
      8: Result := 65;
     else
          Result := 0;
     end;
end;

procedure TForm1.GenerateEdits(arr: TEdits; AOwner: TComponent; Parent: TWinControl);
var
 Column, Row, TopPad, LeftPad: Integer;
begin
 TopPad:= 5;
 LeftPad:= 70;
 for Column := 1 to 8 do
 begin
   for Row:= 1 to 24 do
   begin
     arr[Column,Row]:= TEdit.Create(AOwner);
     arr[Column,Row].Parent := Parent;
     arr[Column,Row].Width := GetColumnWidth(Column);
     arr[Column,Row].Top := TopPad+Row*(arr[Column,Row].Height+2);
     arr[Column,Row].Left := LeftPad;
     
    end;
   LeftPad := LeftPad + arr[Column,Row-1].Width+2;
 end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
 GenerateEdits(EditsArray_1,PageControl1,TabSheet1);
 GenerateEdits(EditsArray_2,PageControl1,TabSheet2);
end;

далее необходиму по событию из Комбобокса сделать выборку из базы данных, и полученные значения присвоить свойству Text объектов Tedit, прорисованных на форме. (выборка хитрая, имеем 24 строки по 8 столбцов, первая выборка дает нам значения 24 строк, и 1 по 7 столбцы, а вот вторая выборка, берет значение из 5 столбца объектов Tedit (им значение присвоила первая выборка и соответственно оно там есть) закидывает это значение в запрос и ответ присваивает значение 8 столбца)

for Column := 1 to 8 do
       begin
          for Row := 1 to 24 do
              begin
                  if not (Column = 10) then
                      begin
                         EditsArray_1[Column][Row].Text := ADOQuery1.Fields[Row-1].AsString;
                         ADOQuery1.Next;
                      end
                  else
                      begin
////////////////////////////////////
              if (EditsArray_1[5,Row].Text="PPPoE") and (EditsArray_1[3,Row].Text <> "") then // Видим что клиент PPP-шный
              begin
              form1.ADOQuery2.Active:=false;
              form1.ADOQuery2.SQL.Clear;
              form1.ADOQuery2.SQL.Add("exec CardGetByNumber_3 "+""""+EditsArray_1[3,Row].Text+"""");
              fORM1.ADOQuery2.Active:=true;
              EditsArray_1[Column,Row].Text :=form1.ADOQuery2.FieldByName("CardLimit").AsString;
              end;

              if (EditsArray_1[5,Row].Text <> "") and (EditsArray_1[5,Row].Text<>"PPPoE") and (EditsArray_1[3,Row].Text <> "") then // Ищем клиента со стат. IP адресом по www логину
              begin
              Form1.ADOQuery2.Active:=false;
              form1.ADOQuery2.SQL.Clear;
              Form1.ADOQuery2.SQL.add("select * from WebLogin where username="+""""+EditsArray_1[3,Row].Text+"""");
              form1.ADOQuery2.Active:=true;
                 if (form1.ADOQuery2.RecordCount > 0)  then     //если запись одна и все ок
                   begin
                     userID:=Form1.ADOQuery2.FieldByName("SubscriberID").AsString;
                     Form1.ADOQuery2.Active:=false;
                     form1.ADOQuery2.SQL.Clear;
                     Form1.ADOQuery2.SQL.add("Select saldo from Account where SubscriberID ="+userID);
                     form1.ADOQuery2.Active:=true;
                     EditsArray_1[Column,Row].Text:=form1.ADOQuery2.FieldByName("saldo").AsString;
                   end;
                  //else if (form1.ADOQuery2.RecordCount > 1)then ShowMessage("www логин клиента "+Form1.Edit11.Text+"не уникален");
              end;
              ADOQuery1.Next;

////////////////////////////////////
                      end;
              end;

       end;

А теперь проблема:
Вся проблема в том, что в строке:
EditsArray_1[Column][Row].Text := ADOQuery1.Fields[Row-1].AsString;

не происходит присваивание значения свойству Text элементу массива EditsArray_1.
Значение из базы получаю, а вот присвоить не могу.

Прога используеться для стыковки инфы между биллингом и DSLAM и отображения ее в "читаемом" виде для службы тех поддержки.

Заранее Благодарен.


 
iles ©   (2006-02-22 12:40) [1]

if not (Column = 8) then


 
Плохиш ©   (2006-02-22 12:40) [2]

Рекомендую воспользоваться встроенным в делфи отладчиком.


 
clickmaker ©   (2006-02-22 12:41) [3]


> ADOQuery1.Fields[Row-1]

а почему Row? это же массив полей по столбцам


 
iles ©   (2006-02-22 12:57) [4]


> Рекомендую воспользоваться встроенным в делфи отладчиком.


ну через BreakPoint смотрел, вижу что не присваиваеться и все. А как и почему не понимаю....

Help plizzzz.


 
iles ©   (2006-02-22 12:59) [5]


> а почему Row? это же массив полей по столбцам

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

В принципе они и щас не прописываються, но я хотя бы по дебагу вижу что порядок верный.


 
clickmaker ©   (2006-02-22 13:06) [6]

в ADOQuery1.Fields[Row-1].AsString точно есть значение?
может там надо  ADOQuery1.First где-то сказать...


 
iles ©   (2006-02-22 13:16) [7]


> в ADOQuery1.Fields[Row-1].AsString точно есть значение?
> может там надо  ADOQuery1.First где-то сказать...


значения есть, при дебаге останавливаюсь на этой строке, вижу что ADOQuery1 возвращает значение.

Более того,

procedure TForm1.Button1Click(Sender: TObject);
begin
EditsArray_1[1,1].Text := "TEST";
end;

Тоже не срабатывает.:(((((((


 
Плохиш ©   (2006-02-22 13:52) [8]


> iles ©   (22.02.06 13:16) [7]

> Тоже не срабатывает.:(((((((

Смею предположить, что для того чтобы увидеть ресультат надо переключиться на правильную закладку.
У меня твой пример работает, т.ч. [2] остаётся в силе.


 
Плохиш ©   (2006-02-22 13:58) [9]

PS. И вообще, я бы TStringGrid использовал.


 
iles ©   (2006-02-22 14:10) [10]


> PS. И вообще, я бы TStringGrid использовал.


С grid конечно все было бы проще, но нужна именна такая схема.


 
iles ©   (2006-02-22 14:11) [11]


> Смею предположить, что для того чтобы увидеть ресультат
> надо переключиться на правильную закладку.
> У меня твой пример работает, т.ч. [2] остаётся в силе.


Блин, как ето????? значение присваиваеться?????????
Из-за версии дельфи может быть ???


 
Плохиш ©   (2006-02-22 14:12) [12]


> значение присваиваеться?????????

да

> Из-за версии дельфи может быть ???

д7


 
clickmaker ©   (2006-02-22 14:19) [13]

procedure TForm1.GenerateEdits(var arr: TEdits; AOwner: TComponent; Parent: TWinControl);
рекомендую обратить внимание на жирный участок


 
iles ©   (2006-02-22 14:27) [14]


> procedure TForm1.GenerateEdits(var arr: TEdits; AOwner:
> TComponent; Parent: TWinControl);
> рекомендую обратить внимание на жирный участок


Ё!!!!!!!!!!!!!!!!!!!!!!!!!!

работает...

Всем спасибо за помощь. как всегда беда в "не внимательности".
Еще раз Спасибо.



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

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

Наверх




Память: 0.5 MB
Время: 0.012 c
1-1139388998
Дмитрий_Б
2006-02-08 11:56
2006.03.12
Текст в QR под углом 90 градусов


15-1139945845
Подключенный
2006-02-14 22:37
2006.03.12
IP подключенных к свичу


2-1140609531
zxcv
2006-02-22 14:58
2006.03.12
время, затрачиваемое на выполнение процедуры или ф-ии


15-1139918449
DelphiLexx
2006-02-14 15:00
2006.03.12
unit OpenGL


2-1141027882
veb
2006-02-27 11:11
2006.03.12
Delphi.NET





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский