Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Могут ли объекты присутствовать в процедурах и фун, Процедуры и функции 
:(
    Опции темы
Drizhenko
Дата 31.10.2005, 09:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 175
Регистрация: 13.1.2005

Репутация: нет
Всего: нет



Скажите пожалуйста как этот код выделить в отдельную процедуру или функцию?
Код

        h:=length(RichEdit1.Lines[RichEdit1.Lines.count-1]);
        richEdit1.SelStart:=richEdit1.SelStart-h-2;
        richEdit1.SelLength:=h;
        richEdit1.SelAttributes.Color:=clred;
        richEdit1.SelStart:=richEdit1.SelStart+h;

PM MAIL   Вверх
Zero
Дата 31.10.2005, 09:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2169
Регистрация: 23.10.2004
Где: Россия, г. Рязань

Репутация: 8
Всего: 24



например на нажатие кнопки:
Код

procedure TForm1.BitBtn1Click(Sender: TObject);
var
  h:integer;
begin
  h:=length(RichEdit1.Lines[RichEdit1.Lines.count-1]);
  richEdit1.SelStart:=richEdit1.SelStart-h-2;
  richEdit1.SelLength:=h;
  richEdit1.SelAttributes.Color:=clred;
  richEdit1.SelStart:=richEdit1.SelStart+h;
end;

PM MAIL ICQ   Вверх
Drizhenko
Дата 31.10.2005, 10:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 175
Регистрация: 13.1.2005

Репутация: нет
Всего: нет



А как к ней обращаться из программы? Так?
Код

 TForm1.Button2Click();

Что писать в скобках?
PM MAIL   Вверх
Bose
Дата 31.10.2005, 10:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1458
Регистрация: 5.3.2005
Где: Riga, Latvia

Репутация: 23
Всего: 51



если тебе чтобы этот код выполнялся по нажатию кнопки, то просто добавь кнопку на форму, найди в событиях кнопки событие OnClick, и щелкни по нему 2 раза левой кнопкой мышки. Дельфи автоматически добавит такую процедуру
Код

procedure TForm1.BitBtn1Click(Sender: TObject);    
begin    
end;

потом просто вписываешь между begin и end, нужный тебе код. Этот код будет выполнятся при нажатии на эту кнопку.
Чтобы вызвать этц процедуру программно, тебе нужно будет написать в коде
Код

BitBtn1Click(self);


если тебе не нужно привязывать этот код к нажатию на кнопку, то в теле формы в нужном тебе разделе(private/public) добавь строчку procedure MyProc; , потом поставь курсор на слово MyProc; и нажми Ctrl+Shift+C, и запиши свой код в тело процедуры(его создаст Дельфи после нажатия Ctrl+Shift+C)
PM MAIL WWW Skype   Вверх
Drizhenko
Дата 31.10.2005, 10:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 175
Регистрация: 13.1.2005

Репутация: нет
Всего: нет



Спасибо, мне подходит третий вариант. Процедура появилась, я записал туда код. Но когда вызываю процедуру появляется ошибка. Как ее правильно вызвать?

Пробовал разные варианты
Код

TForm1.MyProc;
TForm1.MyProc();
TForm1.MyProc(self);

PM MAIL   Вверх
Zero
Дата 31.10.2005, 10:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2169
Регистрация: 23.10.2004
Где: Россия, г. Рязань

Репутация: 8
Всего: 24



Цитата(Drizhenko @ 31.10.2005, 11:02)
Что писать в скобках?

Или напиши Sender например... Но это для кнопки, хотя делфи это делает автоматически...
и процедуру може не обязательно принадлежащую классу, можешь свою сделать.
Я просто не знаю что ты конкретно хочешь, поэтому однозначно не могу сказать...
Добавлено @ 10:50
Вот в качестве варианта те ещё один пример:
Код

procedure MyProc();
var
  h:integer;
begin
  With Form1 do
    begin
      h:=length(RichEdit1.Lines[RichEdit1.Lines.count-1]);
      richEdit1.SelStart:=richEdit1.SelStart-h-2;
      richEdit1.SelLength:=h;
      richEdit1.SelAttributes.Color:=clred;
      richEdit1.SelStart:=richEdit1.SelStart+h;
    end;
end;

procedure TForm1.BitBtn1Click(Sender: TObject);
begin
  MyProc();
end;

PM MAIL ICQ   Вверх
Drizhenko
Дата 31.10.2005, 11:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 175
Регистрация: 13.1.2005

Репутация: нет
Всего: нет



ПОНЯЛ вот правильный вариант
Код

MyProc();

СПАСИБО!!!! smile smile smile

У меня возник еще вопрос. Скажите как сделать, чтобы входными данными для процедуры MyProc() были цвет шрифта, например clred или clblack.
То есть чтобы менялся параметр Color
Код

richEdit1.SelAttributes.Color:=Цвет;

PM MAIL   Вверх
Zero
Дата 31.10.2005, 11:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2169
Регистрация: 23.10.2004
Где: Россия, г. Рязань

Репутация: 8
Всего: 24



Если исходить из моего примера, то добавь в заголовок имя цвета:
Код

procedure MyProc(cvet: integer);
......

А вызывай потом так:
Код

MyProc(<цифра соответствующая цвету>);

Добавлено @ 11:33
Т.е. в процедуре MyProc, это будет так:
Код

richEdit1.SelAttributes.Color:= cvet;

PM MAIL ICQ   Вверх
Drizhenko
Дата 31.10.2005, 11:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 175
Регистрация: 13.1.2005

Репутация: нет
Всего: нет



Проблема здесь в том, что цвета пишутся в шестнадцатирияном коде, то есть красный цвет имеет значение ff0000. Как быть с этим?
В одной статье прочитал, что есть тип данных colors, но что-то у меня не получается с ним.
PM MAIL   Вверх
Zero
Дата 31.10.2005, 11:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2169
Регистрация: 23.10.2004
Где: Россия, г. Рязань

Репутация: 8
Всего: 24



Цитата(Drizhenko @ 31.10.2005, 12:39)
В одной статье прочитал, что есть тип данных colors, но что-то у меня не получается с ним.

А что за тип то, цвет ─ это есть номер в стандартной палитре цветов.
Как то можно преобразовывать из 16-ричной системы, но ща не помню блин... smile
А зачем вообще его в 16-ричную запихивать, чем СС10 не нравится то???
PM MAIL ICQ   Вверх
Drizhenko
Дата 31.10.2005, 12:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 175
Регистрация: 13.1.2005

Репутация: нет
Всего: нет



Что за СС10? В любом случае это не integer.
PM MAIL   Вверх
Romikgy
Дата 31.10.2005, 12:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 26
Всего: 146



Код

procedure MyProc(cvet: TColor);



--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Drizhenko
Дата 31.10.2005, 12:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 175
Регистрация: 13.1.2005

Репутация: нет
Всего: нет



Спасибо, я кстати нашел альтернативный вариант

Процедура
Код

procedure MyProc(cvet: integer);
...
richEdit1.SelAttributes.Color:= cvet;
...

Вызов процедуры
Код

MyProc(StrToInt('$'+'ff0000')


PM MAIL   Вверх
p0s0l
Дата 2.11.2005, 00:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Г-н Посол
****


Профиль
Группа: Экс. модератор
Сообщений: 3668
Регистрация: 13.7.2003
Где: 58°38' с.ш. 4 9°41' в.д.

Репутация: 58
Всего: 112



Цитата(Drizhenko @ 31.10.2005, 12:56)
MyProc(StrToInt('$'+'ff0000')
Так проще:
Код

MyProc($ff0000);
// или
MyProc(clBlue);



--------------------
С уважением, г-н Посол.
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1021 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.