Форум: "Основная";
Текущий архив: 2005.11.06;
Скачать: [xml.tar.bz2];
ВнизПочему FindComponent не находит Найти похожие ветки
← →
kyn66 © (2005-10-19 11:41) [0]Уважаемые мастера, день добрый. Помогите разобраться , почему не работает часть кода?
На форме есть StringGrid, в который вожу некоторые числа и картинка, на которую затем переношу
эти числа для визуализации, путем создание меток. Затем, чтобы затереть некоторую метку на картинке,
при клике по StringGrid, у меня она не затирается, почему? Привожу код
1 часть, создание меток:
procedure TMainFrm.DrawDigit(k , m : Byte; S : String);
begin
with TLabel.Create(Self) do
begin
Parent := ImgPanel;
Alignment := taCenter;
Transparent := True;
AutoSize := False;
Font.Style := [fsBold];
Width := 14;
Height := 13;
case k of
0: begin
Left := BS1_A[m].X + 35;
Top := BS1_A[m].Y + 25;
end;
1: begin
Left := BS2_A[m].X + 35;
Top := BS2_A[m].Y + 25;
end;
2: begin
Left := BS3_A[m].X + 35;
Top := BS3_A[m].Y + 25;
end;
3: begin
Left := BS4_A[m].X + 35;
Top := BS4_A[m].Y + 25;
end;
4: begin
Left := BS5_A[m].X + 35;
Top := BS5_A[m].Y + 25;
end;
5: begin
Left := BS6_A[m].X + 35;
Top := BS6_A[m].Y + 25;
end;
end; {Case}
Caption := S;
Name := "DigitLab_" + IntToStr(k) + "_" + IntToStr(m);
end;
end;
<code/>
2 часть, этот код не отрабатывает правильно 8-(, почему?
procedure TMainFrm.StringGrid1SelectCell(Sender: TObject; ACol,
ARow: Integer; var CanSelect: Boolean);
begin
with (Sender as TStringGrid) do
if Cells[ACol, ARow] <> "" then
begin
FromDel := True;
Panel1Click(Self.FindComponent("Panel" + Cells[ACol, ARow]));
Cells[ACol, ARow] := "";
if ARow = 0 then
TLabel(FindComponent("DigitLab_" + IntToStr(0) + "_" + IntToStr(ACol))).Free;
else
TLabel(FindComponent("DigitLab_" + IntToStr(1) + "_" + IntToStr(ACol))).Free
end;
end;
end;
<code/>
Почему здесь ACol недоступен, и метка не находится, следовательно не уничтожается?
← →
Игорь Шевченко © (2005-10-19 11:44) [1]
> метка не находится
Потому что FindComponent относится к гриду, а метка создается, как дочерний компонент формы. Убрать with или указать Self.FindComponent
← →
begin...end © (2005-10-19 11:45) [2]> kyn66 © (19.10.05 11:41)
> with (Sender as TStringGrid) do
> ...
> TLabel(FindComponent...
Вероятно, вызывается метод FindComponent stringgrid"а, а не формы. Поэтому компонент и ищется среди компонентов, принадлежащих stringgrid"у, а не форме.
← →
kyn66 © (2005-10-19 11:53) [3]>> Игорь Шевченко
>> begin...end
8-)))))))))))т Ура! Спасибо Вам, МАСТЕРА. Все заработало как надо !!!
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2005.11.06;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.037 c