Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на Delphi


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Delphi

Выпуск № 693
от 28.12.2006, 13:05

Администратор:Калашников О.А.
В рассылке:Подписчиков: 413, Экспертов: 62
В номере:Вопросов: 6, Ответов: 14


Вопрос № 68135: Как можно динамически создавать CheckBox'ы и как впоследствии определить какие из них нажаты? И можно называть по типу CB1, CB2 и т.п....
Вопрос № 68168: нужно поместить информацию в двусвязный динамический список.в информационной части которого содержится информация:артикль товара, название товара, остаток на складе, партия поступления, цена товара, срок годности, год выпуска.помогите все это помести...
Вопрос № 68183: Здравствуйте Уважаемые Эксперты! Прошу ответить на мой вопрос?: Есть 1 переменная типа Real и одна типа Integer...в Переменной типа Real находиться дробное число с большим кол-вом знаков после запятой, хотелось бы запихнуть значения перемнной...
Вопрос № 68204: Как можно узнать координаты курсора, например из OnClick'а? (Т.е. без MouseMove)...
Вопрос № 68214: мне срочно нужно описание свойств компонента RichEdit.у меня екзамен во вторник а я про него найти ничего не могу...
Вопрос № 68250: Здравствуйте! Как можно gif в Image засунуть?...

Вопрос № 68.135
Как можно динамически создавать CheckBox'ы и как впоследствии определить какие из них нажаты? И можно называть по типу CB1, CB2 и т.п.
Отправлен: 22.12.2006, 12:51
Вопрос задал: Томша Павел (статус: 3-ий класс)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Gh0stik
Здравствуйте, Томша Павел!

Смотрите пример.

В нем при нажатии на кнопку Button1 на форме создается 3 CheckBox'а.

А при нажатии на кнопку Button2 в Caption пишеться значения переключателей (true или false).

Если же Вам необходимо сделать обработчик вида CheckBoxXClick, то просто пишете универсалную процедуру и ее назначеете каждому переключателю, примерно так:


procedure CheckBoxXClick;
begin
.................
end;
........

for i:=1 to 3 do
begin
with TCheckBox(FindComponent('CB'+inttostr(i))) do
OnClick:=CheckBoxXClick;
end;


Good Luck!!!

Приложение:

---------
Господь Бог - это всего лишь сверхмощный генератор случайных чисел, в соответствии с которыми сочетаются события на Земле. Генератор случайных чисел - и только.

Ответ отправил: Gh0stik (статус: Практикант)
Ответ отправлен: 22.12.2006, 13:32
Оценка за ответ: 5

Отвечает: KiberZero
Здравствуйте, Томша Павел!

К ответу Gh0stik хочу добавить:

При динамическом создании компонента в большинстве случаев владелецем становится "Self". Если вы в этот момент находитесь в одном из методов формы, "Self" в данном контексте будет ссылаться на саму форму. Если владелец является действительным объектом, освобождение этого объекта влечет за собой автоматическое освобождение "дочернего" компонента. Другим распространенным параметром является "Application". Он может использоваться в случае, когда визуальный компонент не должен быть показан программой пользователю. Тем не менее, большинство компонентов не требуют назначения владельца, так что нет ничего необычного в том, что требуемый параметр owner устанавливается в Nil. Но вы должны помнить о том, что впоследствии вы не сможете изменить владельца объекта. Если конструктору при создании был передан Nil, то после использования компонента вы должны сами освобождать его вызовом Free.

После создания оконных компонентов (т.е. тех компонентов, которые являются наследниками TWinControl), но еще перед тем, как они будут отображены, у них необходимо установить свойство Parent. Место установки свойства Parent является хорошим местом для установки других свойств экземпляра данного компонента, включая обработчики событий (например, Width, Color, OnClick).

Удачи!
Ответ отправил: KiberZero (статус: 7-ой класс)
Ответ отправлен: 22.12.2006, 17:16


Вопрос № 68.168
нужно поместить информацию в двусвязный динамический список.в информационной части которого содержится информация:артикль товара, название товара, остаток на складе, партия поступления, цена товара, срок годности, год выпуска.помогите все это поместить в список
Отправлен: 22.12.2006, 16:24
Вопрос задал: Дианочка (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Сухомлин Кирилл Владимирович
Здравствуйте, Дианочка!
По-моему, различать дву/одно-свзяность можно только когда вы исопльзуете последовательные итераторы. В Delphi у TList есть только итератор с произвольным доступом — по индексу массива.
Для самой информации создаете класс (TGoodRecord) с полями, но без методов — только конструктор.
Для добавлении в список:
rec := TGoodRecord.Create;
with rec do begin
article := art1;
name := nm;
amount := amnt;
partNum := pn;
price := pc;
bestbefore := bb;
year := yr;
end;
rec.
MyList.Add(rec);

для удаления (i-го элемента):

rec := MyList[i];
FreeAndNil(rec);
MyList.Delete(i);

везде переменная rec типа TGoodRecord

Приложение:

---------
Не узнаешь - не попробуешь.

Ответ отправил: Сухомлин Кирилл Владимирович (статус: Практикант)
Ответ отправлен: 22.12.2006, 17:02


Вопрос № 68.183
Здравствуйте Уважаемые Эксперты!
Прошу ответить на мой вопрос?:
Есть 1 переменная типа Real и одна типа Integer...в Переменной типа Real находиться дробное число с большим кол-вом знаков после запятой, хотелось бы запихнуть значения перемнной Real в Integer не округляя(просто отбросить все числа после запятой)
Заранее благодарен, Ustas.
Отправлен: 22.12.2006, 18:42
Вопрос задал: Ustas (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Устинов Сергей Евгеньевич
Здравствуйте, Ustas!

Если я правильно понял Ваш вопрос, то решение в приложении :)
Функция trunc выделяет целую часть из числа.
Функция frac выделяет дробную часть из числа.

Удачи!

Приложение:

---------
Ждешь квалифицированного ответа? Задай правильно вопрос!

Ответ отправил: Устинов Сергей Евгеньевич (статус: Практикант)
Ответ отправлен: 22.12.2006, 19:45
Оценка за ответ: 5
Комментарий оценки:
Большое спасибо, вы мне очень помогли.

Отвечает: Alex Van Glukhman
Здравствуйте, Ustas!

В Delphi имеется великолепный тип Variant

вот код:

var
a: Float;
b: Variant;
c: Integer;
begin
a:=32467967,36686809573;
b:=a;
c:=b;
ShowMessage(IntToStr(c));
end;

Приложение:

Ответ отправил: Alex Van Glukhman (статус: 2-ой класс)
Ответ отправлен: 23.12.2006, 00:34
Оценка за ответ: 5

Отвечает: Bouffon
Здравствуйте, Ustas!
trunc(x)
x число целую часть которого нужно взять
попробуй еще INT(x)
Ответ отправил: Bouffon (статус: 1-ый класс)
Ответ отправлен: 23.12.2006, 13:27
Оценка за ответ: 5


Вопрос № 68.204
Как можно узнать координаты курсора, например из OnClick'а? (Т.е. без MouseMove)
Отправлен: 22.12.2006, 22:00
Вопрос задал: Томша Павел (статус: 3-ий класс)
Всего ответов: 4
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Устинов Сергей Евгеньевич
Здравствуйте, Томша Павел!

Mouse.CursorPos.X и Mouse.CursorPos.Y - координаты положения курсора. Узнать можно без MouseMove.
В примере - на обработчике Btn1Click.

Удачи!

Приложение:

---------
Ждешь квалифицированного ответа? Задай правильно вопрос!

Ответ отправил: Устинов Сергей Евгеньевич (статус: Практикант)
Ответ отправлен: 22.12.2006, 22:49
Оценка за ответ: 5

Отвечает: KiberZero
Здравствуйте, Томша Павел!

Мне не совсем понятно,где вы хотите узнать координаты курсора?!

Определить положение курсора на экране можно при помощи прерывания INT 10h, функции 03h, или, что более удобно, вызвав функцию _gettextposition():

struct rccoord _gettextposition( void );

Функция возвращает в структуре rccoord текущие координаты курсора. Заметим, что начало координат находится в левом верхнем углу экрана, имеющем координаты (1,1), ось X направлена вправо, а ось Y вниз.

Структура rccoord определена во включаемом файле graph.h следующим образом:

struct rccoord {

short row; // Y координата курсора (строка)
short col; // X координата курсора (столбец)
};
Для определения координат курсора можно так же использовать функцию GetPosition.

Procedure GetPosition(r:TRichEdit);
var X,Y:Integer;
begin
Y:=SendMessage(r.Handle,EM_LINEFROMCHAR,r.SelStart,0);
X:=r.SelStart-SendMessage(r.Handle,EM_LINEINDEX,Y,0);
Form1.Caption:=IntToStr(Y)+':'+IntToStr(X) ;
end;

В приложении ещё один пример,посложнее.

Удачи!

Приложение:

Ответ отправил: KiberZero (статус: 7-ой класс)
Ответ отправлен: 22.12.2006, 23:17
Оценка за ответ: 5

Отвечает: monah
Здравствуйте, Томша Павел!
Добавлю совсем немного.
В примере Устинова Сергей Евгеньевича, один недочет. таким образом можно получить экранные координаты курсара, а не внутриние для формы. Для преоброзования надо учитывать такие параметры как Form1.Top и Form1.Left

---------
festina lente
Ответ отправил: monah (статус: Студент)
Ответ отправлен: 23.12.2006, 08:58
Оценка за ответ: 5

Отвечает: Nick_K
Здравствуйте, Томша Павел!

используйте getCursorPos...
Ответ отправил: Nick_K (статус: 2-ой класс)
Ответ отправлен: 25.12.2006, 14:16


Вопрос № 68.214
мне срочно нужно описание свойств компонента RichEdit.у меня екзамен во вторник а я про него найти ничего не могу
Отправлен: 22.12.2006, 23:33
Вопрос задал: Дианочка (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: KiberZero
Здравствуйте, Дианочка!

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

Компонент использует вспомогательные объекты класса TTextAt-tributes для хранения атрибутов шрифта. Эти атрибуты распространяются на весь текст через свойство редактора DefAttributes или на выделенную часть текста - через его свойство SeiAttributes.

Помимо обычных шрифтовых свойств CharSet, Color, Height, Name, Pitch, Size И Style (см. класс TFont) объект TTextAttributes содержит также свойства consistentAttributes и protected. Первое доступно только для чтения и содержит набор текстовых характеристик, общих как для всего текста, так и для его выделенной части. Свойство protected защищает весь текст или его части от редактирования. Попытка изменить текст, имеющий атрибут protected, вызывает обработчик события OnProtectChange, который может разрешить или запретить изменения. По умолчанию изменения запрещены.

Для каждого текстового абзаца создается объект класса трага-Attributes, в котором сохраняются атрибуты абзаца. Эти атрибуты доступны через следующие свойства класса TparaAttributes:

Смотрите в приложении.

Зайдите ещё сюда: http://www.beluch.ru/progr/100comp/3_3_4.htm

Удачи!



Приложение:

Ответ отправил: KiberZero (статус: 7-ой класс)
Ответ отправлен: 22.12.2006, 23:47

Отвечает: Alex Van Glukhman
Здравствуйте, Дианочка!

1.Описание TRichEdit со всеми свойствами, методами и событиями отлично документировано в справочной системе DELPHI. (клавиша F1).
2.Borland поставляет Delphi версий Enterprice и Architect с исходными кодами библиотеки VCL - соответственно там есть определение класса - его свойства, методы и события. Не помню как в Delphi ранних версий, а в Borland Developer Studio 2006 этот модуль именуется ComCtrls.pas
Ответ отправил: Alex Van Glukhman (статус: 2-ой класс)
Ответ отправлен: 23.12.2006, 00:25

Отвечает: Устинов Сергей Евгеньевич
Здравствуйте, Дианочка!

Посмотрите здесь
Описаны свойства, методы, события компонента.

Удачи на экзамене!
---------
Ждешь квалифицированного ответа? Задай правильно вопрос!
Ответ отправил: Устинов Сергей Евгеньевич (статус: Практикант)
Ответ отправлен: 23.12.2006, 01:11


Вопрос № 68.250
Здравствуйте!
Как можно gif в Image засунуть?
Отправлен: 23.12.2006, 11:08
Вопрос задал: Томша Павел (статус: 3-ий класс)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: KiberZero
Здравствуйте, Томша Павел!

Для использования GIF воспользуйтесь специальными компонентами.

Оптимальный вариант - библиотека RXLib:

загружает в HBitmap файлы следующих форматов:

ico, cur, any, bmp, dib, rle, gif, jpeg, jpg, jpe, pcd, pcx, dcx, png, ppm, pbm, pgm, tga, tif, tiff, wbmp, wbm, wmf, apm, emf, psd, img, iff, ras, sgi, xbm, xpm, wpg, dxf, rle, pict, pic, pct, psp, jng, mng, clp, cut, fpx, jp2, jpc, j2k, jpx, j2c, raw

сохраняет в следующие форматы:

jp2, jpc, j2k, jpx, j2c, pcx, dcx, png, ppm, pbm, pgm, tga, tif, tiff, wbmp, wbm, wmf, apm, emf, psd, bmp, dib, rle, gif, jpeg, jpg, jpe.

Скачать можете от сюда http://www.itcenter.net.ru/modules/mydownloads/singlefile.php?lid=84
или
http://www.itword.net/modules/files/showfile.php?lid=102.

Так же советую зайти на http://www.torry.ru/pages.php?id=102#2887.
Тут имеются отдельные компоненты для работы с Gif(правда некоторые платные).

И ещё, зайдите на http://cbuilder.ru/Stat/elm_rxlib/stat.htm, прочитайте статью о компонентах библиотеки RXLib.

Удачи и с наступающим Новым годом!

Ответ отправил: KiberZero (статус: 7-ой класс)
Ответ отправлен: 23.12.2006, 21:23
Оценка за ответ: 5


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2006, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Версия системы: 4.38 от 20.12.2006
Яндекс Rambler's Top100

В избранное