Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Компоненты Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.09.2007, 20:26   #1
Nemesisking
Форумчанин
 
Аватар для Nemesisking
 
Регистрация: 04.02.2007
Сообщений: 213
По умолчанию не StringGrid1.Cells[1,1]:='Delphi'; а вот так SG1.C[1,1]:='Delphi'

У меня в алгоритме очень много 'StringGrid1.Cells'!!! Как можно укоротить, где описать и как? Выглядеть это будет не StringGrid1.Cells[1,1]:='Delphi'; а вот так вот SG1.C[1,1]:='Delphi'
Per Aspera Ad Astra
www.salviaclub.com.ua
Nemesisking вне форума Ответить с цитированием
Старый 06.09.2007, 20:41   #2
still_alive
Great Code Monkey
Форумчанин
 
Аватар для still_alive
 
Регистрация: 09.08.2007
Сообщений: 533
По умолчанию

Так никак если только так:
with SG1 do
begin
Cells[1,1]:=...
end;
still_alive вне форума Ответить с цитированием
Старый 07.09.2007, 00:21   #3
Ring0Sn
Форумчанин
 
Аватар для Ring0Sn
 
Регистрация: 06.09.2007
Сообщений: 239
По умолчанию ed

Цитата:
У меня в алгоритме очень много 'StringGrid1.Cells'!!! Как можно укоротить, где описать и как? Выглядеть это будет не StringGrid1.Cells[1,1]:='Delphi'; а вот так вот SG1.C[1,1]:='Delphi'
Что мешает вынести StringGrid1.Cells[1,1]:='Delphi' в отдельную процедуру? например:
Код:
procedure MySetCells(ACol, ARow: Integer; text: string);
begin
 Form1.StringGrid1.Cells[ACol,ARow]:=text;
end;

далее используешь просто как 
MySetCells(1,1, 'Delphi');
если такое неустраивает то делай наследника класа TStringGrid

Последний раз редактировалось Ring0Sn; 07.09.2007 в 00:23. Причина: !
Ring0Sn вне форума Ответить с цитированием
Старый 07.09.2007, 00:24   #4
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию

или так
Код:
procedure DoSomething(S: TStringGrid);
begin
S.Cells[1,1]:='Delphi';
end;

DoSomething(StringGrid1);
P.S. а вообще больше внимания нужно уделять оптимизации, а упростить код можно выносом таких блоков в отдельные процедуры и функции, или даже модули
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог

Последний раз редактировалось mutabor; 07.09.2007 в 00:32.
mutabor вне форума Ответить с цитированием
Старый 07.09.2007, 00:51   #5
Ring0Sn
Форумчанин
 
Аватар для Ring0Sn
 
Регистрация: 06.09.2007
Сообщений: 239
По умолчанию

Цитата:
P.S. а вообще больше внимания нужно уделять оптимизации, а упростить код можно выносом таких блоков в отдельные процедуры и функции, или даже модули
Согласен! а вообще лучше нестараться чтоб было много таких блоков (или хотябы чтоб они были в циклах)
Ring0Sn вне форума Ответить с цитированием
Старый 07.09.2007, 08:13   #6
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

в данном случае with - самый оптимальный вариант, а процедура только тормозить работу будет (на маленьких прогах то незаметно будет, а вот на большом проекте уже не есть гуд такое). Да и в любом случае Ctrl+C - Ctrl+V еще никто не отменял. А с такими подходами лень программиста выльется в ленивое неповоротливое приложение.
ЗЫ. если хочется писать коротко, то переходите на С++ с его возможностью перегрузки операторов
pu4koff вне форума Ответить с цитированием
Старый 08.09.2007, 02:02   #7
Ring0Sn
Форумчанин
 
Аватар для Ring0Sn
 
Регистрация: 06.09.2007
Сообщений: 239
По умолчанию

Человек интересовался как укоротить а не как ускорить )
pu4koff, самый оптимальный вариант(и ответ на ево вопрос) ето делать наследника класса TStringGrid и переопределить property Cells на C (только невижу смысла вообще никакова в том что он хочет сделать)

Последний раз редактировалось Ring0Sn; 08.09.2007 в 02:10.
Ring0Sn вне форума Ответить с цитированием
Старый 08.09.2007, 03:27   #8
Ring0Sn
Форумчанин
 
Аватар для Ring0Sn
 
Регистрация: 06.09.2007
Сообщений: 239
По умолчанию

Кстати Mutabor
ты писал
Код:
procedure DoSomething(S: TStringGrid);
begin
S.Cells[1,1]:='Delphi';
end;

DoSomething(StringGrid1);
Ты представляешь что будет если так сделать?
При каждом вызове DoSomething внитри процедуры будет происходить копирование StringGrid1, а если в него метров 50 загружено инфы?
Думаю правильнее будет если так
Код:
procedure DoSomething(var S: TStringGrid);
Ring0Sn вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программа-тест в Delphi) скиньте))а то програмку здавать преподу надо,и самой хочется понять Delphi Верчик Помощь студентам 9 02.03.2009 17:46
Stringgrid, cells[m,n] и двумерные массивы.(#002) Очередной вопрос начинающего. Albert2008 Компоненты Delphi 4 28.07.2008 19:02
Delphi. Как нарисовать в Delphi два движущиеся шара с определенной скоростью? redred Общие вопросы Delphi 10 11.12.2007 10:43
Как открыть БД, написанную в Delphi если нf другой машине Delphi нет? dagarik БД в Delphi 7 22.10.2007 17:54
Button1 и на Form2 открылся текст из файла (таблица)в StringGrid1. KSP Общие вопросы Delphi 2 19.09.2007 18:51