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

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


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

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

Выпуск № 422
от 23.03.2006, 23:05

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


Вопрос № 37806: Доброе время суток подскажите пожалуста как реализовать следущую программу на Делфи свободные колебания математического маятника произвольной длины (и если можно опишите пожалуста как она(прог-ма) работает)...
Вопрос № 37811: Здравствуйте ув. эксперты, вопрос такой, только установил библиотеки KOL, (удивили размеры проекта......, знал что меньше будет, но ни думал что на столько..) хотелось бы узнать есть ли хелп (например, как стандартный Delphi, ), ...
Вопрос № 37823: Здравствуйте! Подcкажите как можно добавить в код копирование директории (dir) с файлами, c CD-Rom (PChar(s[i] + ': function GetCDRoms: string; // Возвращает строку - список CD-ROM'ов var d: dwo...
Вопрос № 37853: Привет... Мне нужно вывести текс...каким компонентом воспользоваться??? Меня впринципи устраивает Memo, но хочется чтобы пользователь не мог менять текст, ставил свойство Enaled в false, но так не красиво... Каким компонентом можно воспо...
Вопрос № 37862: Прет... У меня есть переменная FileName:String на форме1 через меню я вызываю форму2. Каким образом можно передать FileName на форму2? ..

Вопрос № 37.806
Доброе время суток
подскажите пожалуста как реализовать следущую программу на Делфи
свободные колебания математического маятника произвольной длины
(и если можно опишите пожалуста как она(прог-ма) работает)
Отправлен: 17.03.2006, 23:47
Вопрос задал: Sexy (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Boriss
Здравствуйте, Sexy!
А что Вы понимаете под словом "реализовать"? Нарисовать?
Тогда что Вы не знаете? Что не умеете? Что не понимате?
Здесь не то место, где выполняют заказы – здесь оказывают помощь
---------
Вывод - то место в тексте, где вы устали думать
Ответ отправил: Boriss (статус: Профессор)
Россия, Саранск
Организация: факультет Электронной техники, Мордовский госуниверситет
Адрес: 430032 г. Саранск, ул. Попова, д. 65, кв. 30
WWW: Программирование на Паскале
ICQ: 320096696
----
Ответ отправлен: 18.03.2006, 09:08

Отвечает: Leshiy2006
Здравствуйте, Sexy!Уточните пожалуйста вопрос-что конкретно должна делать прога?
Если проблема с отрисовкой то в используйте Canvas.Pen.Mode:=pmNotXor(пример в приложении),
вобщем конкретизируйте Вашу проблему.
Удачи!

Приложение:

Ответ отправил: Leshiy2006 (статус: 5-ый класс)
Ответ отправлен: 18.03.2006, 23:00


Вопрос № 37.811
Здравствуйте ув. эксперты,
вопрос такой,
только установил библиотеки KOL,
(удивили размеры проекта......, знал что меньше будет, но ни думал что на столько..)
хотелось бы узнать есть ли хелп (например, как стандартный Delphi, ),
по этим процедурам (KOL) - с нормальным поиском,
так же желательно ссылки на какую нибудь литературу по этому поводу,
неудобно искать нужные процедуры в файле KOL.pas

И ещё:
почему, когда ставишь свойство формы Transparent =true ну цвет соответсвенно,
форма становится, как бы прозрачной, но при этом фон формы при перемещении не
изменяется, фон формы остаётся тем куском рабочего стола, где форма появилась, не обновляется ....

Заранее спасибо....
Отправлен: 18.03.2006, 01:12
Вопрос задал: Wlp (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: sir henry
Здравствуйте, Wlp!
Хелпа, такого же как в Дельфи по KOL нет и никогда не было. Хелп генерируется с помощью специальной проги (ее можно взять на том-же сайте) в HTML странички. Если хотите эти странички можно преобразовать в CHM и там сделать поиск или не парится и просто контекстный поиск в браузере Ctrl+F.
Несколько более подробную документацию, факи, можно найти на сайте www.kolnmck.ru. Для начала очень хорошо, ну а потом Вы уже сами сможете кого угодно консультировать. :)
Форум по KOL находится по адресу http://www.delphimaster.ru/cgi-bin/forum.pl?n=10
Очень активный, там почти всегда сидит сам автор и те, кто плотно с KOL'ом работает.
Ответ отправил: sir henry (статус: Академик)
Россия, Красноярск
----
Ответ отправлен: 18.03.2006, 06:06
Оценка за ответ: 5
Комментарий оценки:
спасибо за ссылку, на www.kolnmck.ru - посмотрю,
а на delphiworld - я забрёл ещё до получения ответов. :), только вот на форум не залазил,
просто информацию скачал [KOL.pas], кстати простой страничкой в броузере.... что ж буду искать Ctrl+F.....

Надеюсь не зря с KOL связался.....

Отвечает: Denisss

Здравствуйте, Wlp!

1. Вы бы MASM загрузили еще, там размеры откомпилированных проектов еще меньше, чем в KOL. (А вообще, для минимизации приложений Delphi я предпочитаю использовать библиотеку Lenin Inc - она у меня не глючит, в отличие от KOL).
2. Как такового справочника нет. Есть только множество статей:
http://excode.ru/arttopic39.html
http://www.soft32.ru/delphi.shtml?topic=tech - тут вниз чуть-чуть пролистайте, будет 28 справочников и статей
http://www.kolnmck.ru/lessons/sprav.shtml
3. Потому, что когда Вы перемещаете форму, то Ваша программа обрабатывает событие перемещения формы и не отрабатывает события перерисовки формы. А вот когда перемещение закончено, то программа перерисовывает форму. Если хотите, чтобы было все красиво, то придется сделать обработчик Transparent самостоятельно.

Заранее пожалуйста...

Удачи!
Ответ отправил: Denisss (статус: Специалист)
Ответ отправлен: 18.03.2006, 12:42
Оценка за ответ: 5
Комментарий оценки:
1. Я в курсе какого размера откомпилированные проекты в MASM - загружал... ,
просто я бы ни стал сравнивать MASM с
ВИЗУАЛЬНОЙ средой Delphi.......
а выбрал я KOL - просто потому что мне случайно попался установщик этих библиотек.....
2.Спасибо за ссылки на материалы,
3. Имелось ввиду:почему программа не обрабатывает событие перемещения формы и перерисовки одновременно,( KOL - за малый размер нужно платить или у меня руки не оттуда растут), ведь в VCL - всё нормально,
и было бы неплохо если бы программа перерисовывала форму, когда перемещение закончено.. [как вы написали] :)


Вопрос № 37.823
Здравствуйте!
Подcкажите как можно добавить в код копирование директории (dir) с файлами, c CD-Rom
(PChar(s[i] + ':
function GetCDRoms: string; // Возвращает строку - список CD-ROM'ов
var
d: dword;
b: byte;
begin
result := '';
d := GetLogicalDrives;
for b := 0 to 31 do
if d and (1 shl b) > 0 then
if GetDriveType(PChar(chr(b+65)+':')) = DRIVE_CDROM then
result := result + chr(b+65);
end;

function GetCDExist: string; // Возвращает список CD-ROM в которых есть диск
var
i: integer;
buf: array[0..MAX_PATH] of char;
d: dword;
begin
result := GetCDRoms;
SetErrorMode(SEM_FAILCRITICALERRORS);
for i := Length(result) downto 1 do
if not GetVolumeInformation(PChar(result[i] + ':'), @buf, MAX_PATH,
nil, d, d, @buf, MAX_PATH) then
Delete(result, i, 1);
end;

procedure TForm1.Button1Click(Sender: TObject);
var
i: integer;
s: string;
begin
// ShowMessage(GetCDExist); // Показать строку со списком CD-ROM с диском внутри
s := GetCDExist;
for i := 1 to Length(s) do // 1 файл копировать File.txt
CopyFile(PChar(s[i] + ':File.txt'), 'C:File.txt', false);
// (PChar(s[i] + ':end;
Отправлен: 18.03.2006, 10:26
Вопрос задал: Serhik_z (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Cheater76
Здравствуйте, Serhik_z!
Вот посмотри код - может поможет:

procedure CopyDirectoryTree(AHandle: THandle; const AFromDirectory,
AToDirectory: string);
var
SHFileOpStruct: TSHFileOpStruct;
FromDir: PChar;
ToDir: PChar;
begin
GetMem(FromDir, Length(AFromDirectory) + 2);
try
GetMem(ToDir, Length(AToDirectory) + 2);
try

FillChar(FromDir^, Length(AFromDirectory) + 2, 0);
FillChar(ToDir^, Length(AToDirectory) + 2, 0);

StrCopy(FromDir, PChar(AFromDirectory));
StrCopy(ToDir, PChar(AToDirectory));

with SHFileOpStruct do
begin
Wnd := AHandle; // Assign the window handle
wFunc := FO_COPY; // Specify a file copy
pFrom := FromDir;
pTo := ToDir;
fFlags := FOF_NOCONFIRMATION or FOF_RENAMEONCOLLISION or FOF_SILENT;
fAnyOperationsAborted := False;
hNameMappings := nil;
lpszProgressTitle := nil;
try
SHFileOperation(SHFileOpStruct);
except
end;
//if SHFileOperation(SHFileOpStruct) <> 0 then RaiseLastWin32Error;
end;
finally
FreeMem(ToDir, Length(AToDirectory) + 2);
end;
finally
FreeMem(FromDir, Length(AFromDirectory) + 2);
end;
end;
Ответ отправил: Cheater76 (статус: 2-ой класс)
Ответ отправлен: 18.03.2006, 12:18

Отвечает: Лучников Ю.В.
Здравствуйте, Serhik_z!

Функция (в приложении) копирует СОДЕРЖИМОЕ директории SourceDir в директорию TargetDir.
Копируются все файлы, подкаталоги, и файлы находящиеся в этих подкаталогах.

Аргумент StopIfNotAllCopied: если значение этого аргумента = True,
то при первой же ошибке копирования файла или папки, работы функции
прекратится а функуция вернёт False. В случае если этот аргумент = False,
то ошибки копирования учитываться не будут.

Аргумент OverWriteFiles: если True, то существующие файлы будут переписаны.

Зависимости (нужные юниты): SysUtils, FileCtrl, Windows

Приложение:

Ответ отправил: Лучников Ю.В. (статус: Практикант)
Ответ отправлен: 18.03.2006, 23:58


Вопрос № 37.853
Привет...
Мне нужно вывести текс...каким компонентом воспользоваться???
Меня впринципи устраивает Memo, но хочется чтобы пользователь не мог менять текст, ставил свойство Enaled в false, но так не красиво...
Каким компонентом можно воспользоваться или что нужно поменять в свойствах Memo???
Отправлен: 18.03.2006, 15:36
Вопрос задал: Denton (статус: Посетитель)
Всего ответов: 5
Мини-форум вопроса >>> (сообщений: 2)

Отвечает: Diman_A
Здравствуйте, Denton!
Вообще, у Memo есть свойство Readonly. Поставьте его в true, тогда юзер не сможет менять текст, но курсор будет отображаться. Если вас это не устраивает, используйте компонент richedit. Поставьте свойство enabled в false, и в нем все будет, как и при enabled=true, но юзер вообще ничего не сможет сделать с текстом.
Ответ отправил: Diman_A (статус: 8-ой класс)
Ответ отправлен: 18.03.2006, 16:50

Отвечает: sir henry
Здравствуйте, Denton!
Видимо Вас расстроил цвет при Enable:=False? У TMemo есть менее пугающее свойство, называется ReadOnly. Ставите его в True и никто не сможет редактировать текст. Цвет не меняется.
Если говорить в общем, то надо знать, какой текст, какой вид он должен иметь. Одно дело просто текст и совсем другое текст с форматированием, типа RTF или HTML. Немаловажно количество текста.
А компонентов связаных с выводом текста много - TLabel, TEdit, TRichEdit... В общем, много их.
Ответ отправил: sir henry (статус: Академик)
Россия, Красноярск
----
Ответ отправлен: 18.03.2006, 17:31

Отвечает: Leshiy2006
Здравствуйте, Denton! Установите свойство ReadOnly = True, кстати вместо TMemo можно использовать TRichEdit - там больше возможностей.
Удачи!

Ответ отправил: Leshiy2006 (статус: 5-ый класс)
Ответ отправлен: 18.03.2006, 22:34

Отвечает: Cheater76
Здравствуйте, Denton!
Можно воспользоваться
ListBox
или
Memo ReadOnly true
Ответ отправил: Cheater76 (статус: 2-ой класс)
Ответ отправлен: 18.03.2006, 23:29
Оценка за ответ: 4
Комментарий оценки:
Нет...в этом-то вся фишка, что задание должно быть записано в файл!

Отвечает: Николай Б.
Здравствуйте, Denton!
Нужно установить
Memo.ReadOnly := true;

Ещё есть компонент SynEdit. У него много преимуществ перед Memo и RichEdit.
Ссылки:
http://synedit.sourceforge.net
http://sourceforge.net/projects/synedit

Также можно скачать с рускоязычного сайта: http://unihighlighter.com/
Ответ отправил: Николай Б. (статус: 2-ой класс)
Ответ отправлен: 19.03.2006, 06:53


Вопрос № 37.862
Прет...
У меня есть переменная FileName:String на форме1 через меню я вызываю форму2. Каким образом можно передать FileName на форму2?
Отправлен: 18.03.2006, 19:08
Вопрос задал: Denton (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: sir henry
Здравствуйте, Denton!
У формы есть строковое поле Tag. Через него можно прердать.
Form2:=TForm.Create;
Form2.Tag:=FileName;
Form2.Show;
Ответ отправил: sir henry (статус: Академик)
Россия, Красноярск
----
Ответ отправлен: 18.03.2006, 19:47

Отвечает: Полховский Александр Владимирович
Здравствуйте, Denton!
Прошу прощения, но свойство Tag не строковое, а целочисленное (со всеми бывает).
А по сему, заведите какую-нибудь переменную FileName1 в форме2 и при вызове последней передайте FileName1:=Filename
---------
Спасём нашу хрупкую планету !
Ответ отправил: Полховский Александр Владимирович (статус: Практикант)
Ответ отправлен: 18.03.2006, 20:01
Оценка за ответ: 4
Комментарий оценки:
Господа...я не понял...что мне надо сделать?
Напишите пажалста поподробней.

Отвечает: Ерёмин Андрей
Здравствуйте, Denton!
Никаких дополнительных переменных не нужно.
Вот фрагмент модуля первой формы. Здесь объявлена сама переменная, но также добавлено описание для второго модуля.

var
Form1: TForm1;

FileName: String = 'abc';


implementation

uses Unit2;

{$R *.dfm}


Аналогично объявляется первый модуль во втором и доступ к переменной уже свободный:

var
Form2: TForm2;

implementation

uses Unit1;

{$R *.dfm}

procedure TForm2.Button1Click(Sender: TObject);
begin
ShowMessage(FileName);
end;


Связи между модулями делать самому не обязательно - если во втором модуле написать просто "form1." и попробовать запустить программу, то Delphi предложит добавить связь на первый модуль - в ответ на "Yes" эта строчка появится сама собой.
---------
Нет правила без исключений. Правило без исключений - исключение из правил.
Ответ отправил: Ерёмин Андрей (статус: Профессор)
Россия, Тула
WWW: Программирование на DELPHI: Всё для программиста.
ICQ: 286837644
----
Ответ отправлен: 18.03.2006, 21:25


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

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

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

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

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала 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.20 (beta) от 17.03.2006
Яндекс Rambler's Top100

В избранное