Вниз
Скачать: CL | DM;

почему не получается получить имя От TComponent   Найти похожие ветки 

← →
КомофОнСамый   (2004-03-09 21:56) [0]


       for i:=0 to ComponentCount-1 do
       begin
         if(Components[i] is TEdit)then
           if(Copy((Components[i] as TObject).Name,1,3)="Tax")then
             with(Components[i] as TEdit)do
               if(Trim(Text)<>"")then
               begin
                 ShowEvent("налоговое поле не должно быть пустым...",1);
                 SetFocus;
                 Exit;
               end;
       end;


делаю такой хитрый фокус - думал что должно сработать ан нет.

задача такая - проверить все TEdit, и если его имя начинается на TaxХХХХХ - то проверить чтоб этот TEdit не был пустым.


← →
Германн ©   (2004-03-09 22:09) [1]

Так ты же пытаешся получить имя не от TComponent ,а от TObject.


← →
Anatoly Podgoretsky ©   (2004-03-09 22:23) [2]

У TObject нет свойства Name


← →
КомофОнСамый   (2004-03-10 11:11) [3]

на самом деле было TEdit, в поиске решения исправил и вставил сюда не посмотревь.

у меня возникло подозрение - а оператор with не переопределяет ли на свои Component.

просто у меня там такая конструкция:

 with(TaxStatus)do
   if(Trim(Text)="")or(Trim(Text)="00")then
   begin
     for i:=0 to ComponentCount-1 do
     begin
        if(Components[i] is TEdit)then
          if(Copy((Components[i] as TEdit).Name,1,3)="Tax")then
            with(Components[i] as TEdit)do
              if(Trim(Text)<>"")then
              begin
                ShowEvent("налоговое поле не должно быть пустым...",1);
                SetFocus;
                Exit;
              end;
      end;
    end;


← →
Внук ©   (2004-03-10 11:17) [4]

Забудьте ж, наконец, про оператор with (крик души). И будет вам счастье. Да, и Copy((Components[i] as TEdit).Name,1,3) можно упростить Copy(Components[i].Name,1,3)


← →
MU   (2004-03-10 11:19) [5]

//if(Trim(Text)<>"")then

if(Trim(Text)= "")then //!!!


← →
КомофОнСамый   (2004-03-10 11:26) [6]

2Внук
 а почему? у TaxStatus получается что есть свои Components?

2MU
да вы правы, перебиваю пример упростив, на самом деле там

if(Trim(Text)<>"")AND(Trim(Text)<>"00")then


← →
MU   (2004-03-10 11:31) [7]

Так
if (Trim(Text) = "") OR (Trim(Text)<> "00") then
или
 if StrToFloatDef(Trim(Text), 0) = 0 then


← →
КомофОнСамый   (2004-03-10 11:53) [8]

2MU
 без разницы - проблема не в этом


← →
Внук ©   (2004-03-10 11:53) [9]

>>КомофОнСамый   (10.03.04 11:26) [6]
>>у TaxStatus получается что есть свои Components?
 А я откуда знаю, какого он типа? :)) Вот именно во избежание таких двусмысленностей. Сам-то через месяц сможешь свою программу прочитать?


← →
КомофОнСамый   (2004-03-10 15:00) [10]

with вроде как уменьшает написание кода

а как переопределить действие with?


← →
Внук ©   (2004-03-10 15:05) [11]

Угу, уменьшает, а еще увеличивает геморрой и затрудняет чтение программы. В каком смысле переопределить?


← →
КомофОнСамый   (2004-03-10 15:24) [12]

вернее отменить действие with


← →
Кщд   (2004-03-10 15:29) [13]

явно указать хозяина св-ва ComponentCount


← →
Игорь Шевченко ©   (2004-03-10 15:53) [14]

Внук ©   (10.03.04 15:05)

Да вроде здесь With правильно указан...


 if Components[i] is TEdit then
   with TEdit(Components[i]) do
     if (Copy(Name,1,3) = "Tax") and (Trim(Text) = "") then
     begin
       ShowEvent("налоговое поле не должно быть    пустым...",1);
       SetFocus;
       Exit;
     end;


← →
sniknik ©   (2004-03-10 16:25) [15]

тоже не люблю with

Игорь Шевченко ©   (10.03.04 15:53) [14]
а делается это к примеру на onExit их Text.x.


← →
sniknik ©   (2004-03-10 16:30) [16]

сорри немного не в "кассу"(непонятно)
но вот что хотел сказать какой Name возмет для обработки в этой конструкции от компонента или от формы MainForm.Name? непонятки.


← →
Vuk ©   (2004-03-10 16:38) [17]

IMHO with, при понимании, как он работает, конечно, мешает не больше, чем self в методах. Естественно, когда with применяется к нескольким объектам одновременно (или with вложены), то путаница в голове неизбежна, но в этом случае лучше, действительно, with не использовать.


← →
Внук ©   (2004-03-10 17:09) [18]

>>Игорь Шевченко ©   (10.03.04 15:53) [14]
 Скорее всего, правильно. Я к тому, что надо вообще стремиться обходиться без with, кроме самых простейших случаев, оно нагляднее и проще. Это, конечно, только IMHO, но в русской транскрипции :))


← →
Игорь Шевченко ©   (2004-03-10 17:55) [19]

sniknik ©   (10.03.04 16:25)


> тоже не люблю with


Ну и что ? А вот Borland любит его. Всякий овощ, будучи употребленным к месту и вовремя приносит свою пользу.


> а делается это к примеру на onExit их Text.x.


А как и когда делается - целиком и полностью зависит от задачи. Задача здесь не приведена, гадания бессмысленны.

Внук ©   (10.03.04 17:09)


> Я к тому, что надо вообще стремиться обходиться без with,
> кроме самых простейших случаев, оно нагляднее и проще


Не скажи, всякая крайность вредна. Писать длинную цепочку методов на немецком языке тоже нечитабельно.



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

Скачать: CL | DM;



Память: 0.49 MB
Время: 0.021 c
14-1078046402
vidiv
2004-02-29 12:20
2004.03.28
Еще один маленький эффектик!


1-1078680567
$tranger
2004-03-07 20:29
2004.03.28
Создание пункта в меню


6-1073976397
Alex*
2004-01-13 09:46
2004.03.28
NMPOP3 проблемы с кодировкой


7-1073908494
S@shka
2004-01-12 14:54
2004.03.28
Есть ли люди работающие с TApdComPOrt?


3-1077411787
HMT
2004-02-22 04:03
2004.03.28
Переход с IBTable на IBQuery...Два глупых вопроса.




   Наверх