|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Объект как переменная процедуры. Общая процедура для нескольких однотипных объектов
Есть процедура
Код:
procedure TFOilGasSprt.FillStringGrid(); var i,j:integer; RecCnt:Cardinal; begin With DM, Self, MissionsStringGrid do begin RecCnt:=Query.RecordCount; //Êîëè÷åñòâî ñòðîê ñîãëàñíî êîëè÷åñòâó çàïèñåé çàïðîñà MissionsCout.Caption:=IntTostr(RecCnt); if RecCnt=0 then RowCount:=2 Else if RecCnt=1 then RowCount:=2 else RowCount:=RecCnt+1; //Î÷èùàåì MissionsStringGrid îò ñòàðûõ çíà÷åíèé j:=0; while (Cells[0,j]<>'') do begin j:=j+1; Rows[j].Clear; end; //Çàïîëíÿåì MissionsStringGrid äàííûìè èç çàïðîñà If RecCnt<>0 then begin for j:=1 to RecCnt do begin for i:=0 to Query.Fields.Count-1 do Cells[i,j]:=Query.Fields[i].AsString; Query.Next; end; end; end; end; Как передать Name StringGrid в процедуру, чтобы она была общей для любых StringGrid с именами, например, StringGrid1 и StringGrid2? |
#2
|
||||
|
||||
Так и передавай:
Код:
procedure TFOilGasSprt.FillStringGrid(MissionsStringGrid : TStringGrid); Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
Этот пользователь сказал Спасибо angvelem за это полезное сообщение: | ||
sorockinalex (10.09.2012)
|
#3
|
|||
|
|||
Пробовал, не понял как вызов организовать... Там константу надо создавать? Напишите пожалуйста вызов, если не сложно!
|
#4
|
||||
|
||||
Как-то так:
Код:
type TFOilGasSprt = class public procedure FillStringGrid(MissionsStringGrid : TStringGrid); end. ... var FOilGasSprt : TFOilGasSprt; ... begin FOilGasSprt.FillStringGrid(StringGrid1 : TStringGrid); ... FOilGasSprt.FillStringGrid(StringGrid2 : TStringGrid); end; Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
Этот пользователь сказал Спасибо angvelem за это полезное сообщение: | ||
sorockinalex (10.09.2012)
|
#5
|
|||
|
|||
СПАСИБО ОГРОМНОЕ!
|
#6
|
|||
|
|||
блин, не работает:
Код:
procedure FillStringGrid(SG : TStringGrid; LBL: TLabel); .... procedure TFOilGasSprt.FillStringGrid(SG : TStringGrid; LBL: TLabel); var i,j:integer; RecCnt:Cardinal; begin With DM, Self, SG do begin RecCnt:=Query.RecordCount; //Количество строк согласно количеству записей запроса LBL.Caption:=IntTostr(RecCnt); if RecCnt=0 then RowCount:=2 Else if RecCnt=1 then RowCount:=2 else RowCount:=RecCnt+1; //Очищаем MissionsStringGrid от старых значений j:=0; while (Cells[0,j]<>'') do begin j:=j+1; Rows[j].Clear; end; //Заполняем MissionsStringGrid данными из запроса If RecCnt<>0 then begin for j:=1 to RecCnt do begin for i:=0 to Query.Fields.Count-1 do Cells[i,j]:=Query.Fields[i].AsString; Query.Next; end; end; end; end; ..... procedure TFOilGasSprt.MissionsRefresh(); begin MissionsFilter(); // FillMissionsStringGrid(); FillStringGrid(MissionsStringGrid, MissionsCount); end; Undeclared Identifier MissionsCount в процедуре MissionsRefresh(); |
#7
|
||||
|
||||
Откуда TFOilGasSprt.MissionsRefresh знает о TStringGrid?
Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
Этот пользователь сказал Спасибо angvelem за это полезное сообщение: | ||
sorockinalex (10.09.2012)
|
#8
|
|||
|
|||
Всё работает! Опечатался ))
|
#9
|
|||
|
|||
Цитата:
Код:
type TFOilGasSprt = class(TForm) BranchesAndLocationsStringGrid: TStringGrid; WorksCount: TLabel; MissionsCout: TLabel; MissionsStringGrid: TStringGrid; |
#10
|
|||
|
|||
вопрос не по теме, но раз уж... в type формы остались объявления объектов, которые боле не существуют на форме, почему они автоматом не удаляются средой программирования??? как определить которые уже не нужны?
|
#11
|
||||
|
||||
Автоматом удаляются визуальные компонеты "брошенные" на форму (присутствуют в DFM). За остальные отвечаешь сам.
Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
Этот пользователь сказал Спасибо angvelem за это полезное сообщение: | ||
sorockinalex (10.09.2012)
|
#12
|
|||
|
|||
а они и были визуальными:
Код:
DBEdit2: TDBEdit; DBEdit3: TDBEdit; |
#13
|
||||
|
||||
Должны удаляться.
Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
Этот пользователь сказал Спасибо angvelem за это полезное сообщение: | ||
sorockinalex (10.09.2012)
|
#14
|
|||
|
|||
прошу прощения за беспокойство, они были под GroupBox
|