Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.03.28;
Скачать: 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 вся ветка

Текущий архив: 2004.03.28;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.118 c
1-1079025693
Василий Петрович
2004-03-11 20:21
2004.03.28
DelimitedText


7-1073572262
Davey
2004-01-08 17:31
2004.03.28
Коммандная строка процесса


3-1077630058
UnMi
2004-02-24 16:40
2004.03.28
Как сортировать...?


14-1074854262
Sergey_Masloff
2004-01-23 13:37
2004.03.28
надежная работа сервера delphi.mastak.ru


3-1077967929
Kryukov Andrew
2004-02-28 14:32
2004.03.28
Поля в Table