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

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


Новое направление Портала RusFAQ.ru:
MosHoster.ru - Профессиональный хостинг

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

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

Выпуск № 1080
от 02.03.2008, 14:35

Администратор:Калашников О.А.
В рассылке:Подписчиков: 442, Экспертов: 60
В номере:Вопросов: 7, Ответов: 17

Нам важно Ваше мнение об этой рассылке.
Оценить этот выпуск рассылки >>


Вопрос № 124757: Здравствуйте! Как написать функцию для расчёта комплексных чисел??...
Вопрос № 124779: В приложении два Edit в которые вводятся вещественные числа. После небольшой обработки результат выводится в другие Edit. При компиляции возникает ошибка "Project AntiMinin2.exe raised exception class EConvertError with message '''is not a valid...
Вопрос № 124803: Как написать команду открытия второй формы в Делфи...
Вопрос № 124814: Вопрос может показаться странным. Нужно создать tpanel который будет находиться на некоторым визуальным обьектом (tdbgrid). Но при изменении размера формы или ее перетаскивании панель безбожно моргает. на панели будет размещен timage с картинкой...
Вопрос № 124831: здраствуйте все кто сможет и не сможет мне помочь!!! может кто-нибудь знает как написать ЧАТ(CHAT) на delphi для связи двух и более компов? помогите пожалуйста. заранее благодарен!!! ...
Вопрос № 124834: Здравствуйте, уважаемые эксперты! Подскажите, как можно сделать так, чтобы выделение ячейки в Stringgrid осуществлялось нажатием не только левой кнопки мыши, но и правой. Ситуация такая. Нажатие правой кнопки мыше приводит к открытию PopUpMen...
Вопрос № 124880: Уважаемые коллеги, как заставить сайт определять мою программу, как стандартный вэббраузер типа (IE, Opera, Mozila, FireFox и т.д.) Использую TWebBrowser...

Вопрос № 124.757
Здравствуйте!
Как написать функцию для расчёта комплексных чисел??
Отправлен: 25.02.2008, 15:13
Вопрос задал: Иванов Дмитрий Иванович (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 4)

Отвечает: Николай Владимирович / Н.В.
Здравствуйте, Иванов Дмитрий Иванович!
Программа в приложенном файле.
В приложении основной код, считающий значение сыммы, разности и произведения.

Числа представляются в виде a*i+b и c*i+d.
Коэффициенты a, b, c, d вводятся соответственно в Edit1, Edit2, Edit3, Edit4.
Сумма и разность - это просто сумма и разность коэффициентов.
С произведением немного сложнее: (a*i+b)*(c*i+d) = a*c*i*i + a*d*i + b*c*i + b*d = i*(a*d + b*c) + (b*d - a*c).
Если будут вопросы, пишите.

Удачи!

Приложение:

Прикреплённый файл: Загрузить >>
Срок хранения файла на сервере RusFAQ.ru составляет 30 суток с момента отправки ответа.

Ответ отправил: Николай Владимирович / Н.В. (статус: Профессионал)
Россия, Москва
WWW: nvsoft.org
ICQ: 420720
----
Ответ отправлен: 25.02.2008, 19:06


Вопрос № 124.779
В приложении два Edit в которые вводятся вещественные числа. После небольшой обработки результат выводится в другие Edit. При компиляции возникает ошибка "Project AntiMinin2.exe raised exception class EConvertError with message '''is not a valid floating point value'. Process stoped. Use Step or Run to continue." Что неправильно я делаю? (Действие происходит по отпусканию клавиши)

Приложение:

Отправлен: 25.02.2008, 16:54
Вопрос задал: Марков Александр Сергеевич (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Zubex
Здравствуйте, Марков Александр Сергеевич!
Варианты:
1) когда Вы вводите данные в Edit1.text, то во втором или пустая строка, или что-то вроде "Edit1" - а это не вещественное число.
2) Неправильный разделитель дробной части.
Решения:
1) Блоки try except;
2) Обработчик повесить на кнопку "Расчет";
Удачи.
---------
Если не знаешь что сказать - лучше промолчи...
Ответ отправил: Zubex (статус: 8-ой класс)
Ответ отправлен: 25.02.2008, 17:55

Отвечает: Genia007
Здравствуйте, Марков Александр Сергеевич!
Причину ошибка Вам уже обьяснили, но немного добавлю, надеюсь Вы не забыли в uses указать
модуль Math, а то уже отсюда начинаются ошибки. Поиграв с кодом выяснил, что этот вариант неудачный, неудобно
вводить числа, лучше сделать через кнопку. Даже при использовании блока try except из под дэлфи всё равно вылезит
ошибка о несовподении типов, а вот из под винды всё пойдёт как надо, предлагаю код по нажатию кнопки с проверкой
на присутствие числа в Editе:

< code >
procedure TForm2.Button4Click(Sender: TObject);
begin
Try
a:= StrToFloat(Edit1.Text);
b:= StrToFloat(Edit2.Text);
Except
MessageDlg('Неправильно введено число',mtError,[mbOk],0);
end;
a1:= Hypot(a,b);
b1:= RadToDeg(ArcTan2(b,a));
Edit3.Text:= FloatToStr(a1);
Edit4.Text:= FloatToStr(b1);
end;
< /code >
Ответ отправил: Genia007 (статус: 6-ой класс)
Ответ отправлен: 26.02.2008, 12:49

Отвечает: Соловьев Евгений
Здравствуйте, Марков Александр Сергеевич!
У вас,как сказали уже, при заполнении Edit1 сразу происходит процесс подсчета, не дождавшись заполнения Edit2, но в Edit2 пустая строка, а это никак не число. Просто задайте на кнопку или же оставьте процедуру вычисления только на Edit2, а на Edit1 удалите.
Удачи =)
Ответ отправил: Соловьев Евгений (статус: 1-ый класс)
Ответ отправлен: 26.02.2008, 16:06


Вопрос № 124.803
Как написать команду открытия второй формы в Делфи
Отправлен: 25.02.2008, 19:49
Вопрос задал: Ибатуллин Дамир Дарвинович (статус: Посетитель)
Всего ответов: 6
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Кэр Лаэда
Здравствуйте, Ибатуллин Дамир Дарвинович!

есть 2 способа

1 если у вас форма создана (проверить можно таким образом Project-Options-forms если ваша форма создана то она будет находится в разделе auto-create forms) следовательно можно сделать так

form2.show или form2.showmodal

если в auto-create forms вашей формы нет, т.е. ее нужно создать и загрузить


uses ...,uForm2;

var
frm2:TForm2;
begin

try
frm2:=TForm2.create(nil);
frm2.show //или frm2.showmodal;
finally
freeandnil(frm2);
end;

end;


писал без делфи если что не будет работать пишите в минифорум
---------
Я знаю что ничего не знаю, но я знаю больше, чем тот кто думает что знает все
Ответ отправил: Кэр Лаэда (статус: Практикант)
Ответ отправлен: 25.02.2008, 19:57

Отвечает: Николай Владимирович / Н.В.
Здравствуйте, Ибатуллин Дамир Дарвинович!
Сначала надо добавить новую форму в проект. Для этого в меню надо зайти File -> New -> Form.
Далее в коде первой формы в нужном месте (обработчик нажатия на кнопку или что-то еще, откуда происходит открытие второй формы) необходимо написать такую строку: Form2.Show или Form2.ShowModal. Далее при запуске программы будет выдано сообщение "Form 'Form1' references form 'Form2' declared in 'unit2' which is not in your USES list. Do you wish to add it?". Надо ответить "Yes".
Теперь форма будет появляться.
Различия методов Show и ShowModal:
Show - показывает вторую форму и Вы можете перейти на первую пока она открыта.
ShowModal - показывает вторую форму, но пока она открыта Вы НЕ можете перейти на другую.
Если будут вопросы, пишите.

Удачи!
Ответ отправил: Николай Владимирович / Н.В. (статус: Профессионал)
Россия, Москва
WWW: nvsoft.org
ICQ: 420720
----
Ответ отправлен: 25.02.2008, 19:59
Оценка за ответ: 5

Отвечает: Bouffon
Здравствуйте, Ибатуллин Дамир Дарвинович!
uses ...,uForm2;

var
frm2:TForm2;
begin

try
frm2:=TForm2.create(nil);
frm2.show //или frm2.showmodal;
finally
freeandnil(frm2);
end;

end;
этот код предназначен для способа SHOWModal, так как если использовать show то freeandnil(frm2) сразу ее удалит, а SHOWModal приостановит выполение этой процедуры подождет пока вы закончите работу с формой frm2 и тогда только удалит ее и освободит память (при таком вызове модальной форме не прописуйте в самой форме frm2 ее удаление (free) ).
если же вы всетаки хотите вызвать форму обычно то напишите:
frm2:=TForm2.create(nil);
frm2.show;
и больше ничего не нужно . в самой форме frm2 на onclose напишите freeandnil(frm2); или просто free;
успехов
Ответ отправил: Bouffon (статус: 2-ой класс)
Ответ отправлен: 25.02.2008, 20:46

Отвечает: demid
Здравствуйте, Ибатуллин Дамир Дарвинович!

Сначала надо в разделе "uses", той формы с которой Вы собираетесь вызывать 2-ую форму, после слова "implementation" написать имя Unit-a 2-ой формы.

Затем в процедуре написать имя формы и метод "Show" или "ShowModal" этой формы.

"Show" - открывает данное окно;
"ShowModal" - открывает окно модально, т.е. пока Вы не закроете 2-ое окно, не сможете работать с 1-ым.

(полный пример в приложении).

Приложение:

---------
Нет предела совершенству...

Ответ отправил: demid (статус: 3-ий класс)
Ответ отправлен: 26.02.2008, 06:15

Отвечает: Genia007
Здравствуйте, Ибатуллин Дамир Дарвинович!
Если ВЫ сделали вторую форму во время проектирования, то Form2.Visible:=True;
а если она у Вас автоматически не создаётся во время запуска программы, то
Application.CreateForm(TForm, Form2);
Form2.Visible:=True;
Ответ отправил: Genia007 (статус: 6-ой класс)
Ответ отправлен: 26.02.2008, 12:04
Оценка за ответ: 5

Отвечает: Соловьев Евгений
Здравствуйте, Ибатуллин Дамир Дарвинович!
Это зависит от, того какую форму вы хотите вызвать:
-fsMDIChild
-fsNormal
Дочерние окна просто так не открыть с помощью Form2.Show(тем более, Form2.ShowModal).
Для этого нужна команда:
Form2:=TForm2.Create(MainForm.Owner);
Но на закрытии дочернего окна обязательно надо задать в OnClose
Action:=caFree;
Без него оно будет просто сворачиваться.
А так если у вас просто fsNormal окно,то используйте рекомендации,раннее данных экспертов.
Ответ отправил: Соловьев Евгений (статус: 1-ый класс)
Ответ отправлен: 26.02.2008, 15:49
Оценка за ответ: 5


Вопрос № 124.814
Вопрос может показаться странным.
Нужно создать tpanel который будет находиться на некоторым визуальным обьектом (tdbgrid). Но при изменении размера формы или ее перетаскивании панель безбожно моргает. на панели будет размещен timage с картинкой.
Подскажите пожалуйста как избавиться от этого моргания или альтернативный путь (как создать форму которая будет активна в то время когда активна главная форма )
Отправлен: 25.02.2008, 20:31
Вопрос задал: Bouffon (статус: 2-ой класс)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Drbear
Здравствуйте, Bouffon!

На вторую часть вопроса предлагаю такой вариант: попробуйте вставить в событие OnActivate второй формы такой код
SendMessage(Application.MainForm.Handle, WM_NCACTIVATE, Integer(True), 0);
Ответ отправил: Drbear (статус: 7-ой класс)
Ответ отправлен: 26.02.2008, 09:47


Вопрос № 124.831
здраствуйте все кто сможет и не сможет мне помочь!!!
может кто-нибудь знает как написать ЧАТ(CHAT) на delphi
для связи двух и более компов?
помогите пожалуйста.
заранее благодарен!!!
Отправлен: 25.02.2008, 22:17
Вопрос задала: скромная марина сергеевна (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Лысенков Антон Анатольевич
Здравствуйте, скромная марина сергеевна!

Посмотрите ответ здесь: http://pblog.ru/?p=91
Ответ отправил: Лысенков Антон Анатольевич (статус: 5-ый класс)
Ответ отправлен: 25.02.2008, 22:33
Оценка за ответ: 4

Отвечает: Сычёв Павел Алексеевич
Здравствуйте, скромная марина сергеевна!
Смотрите стандартный пример в дельфи.
Он находится тут-
(Папка установки дельфи)DemosInternetNetChat
Ответ отправил: Сычёв Павел Алексеевич (статус: 3-ий класс)
Ответ отправлен: 26.02.2008, 20:25


Вопрос № 124.834
Здравствуйте, уважаемые эксперты!
Подскажите, как можно сделать так, чтобы выделение ячейки в Stringgrid осуществлялось нажатием не только левой кнопки мыши, но и правой.
Ситуация такая. Нажатие правой кнопки мыше приводит к открытию PopUpMenu. При нажатии кнопки изменить в этом меню открывается новое окно, происходит выбор нового параметра, после чего нужно чтобы изменение произошло именно в ячейке, над которой была нажата правая кнопка мыши. Но изменяется содержание выделенной ячейки. Поэтому мне бы хотелось, чтобы перед открытием PopUpMenu, выделлялась ячейка, над которой находится курсор (или просто, чтобы координаты этой ячейки записывались в мои переменные), а потом продолжалась работа с PopUpMenu.
Спасибо.
Отправлен: 25.02.2008, 22:51
Вопрос задал: Vassea (статус: Студент)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 4)

Отвечает: Bouffon
Здравствуйте, Vassea!
Здравствуйте, Vassea!
procedure TForm1.StringGrid1MouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin

StringGrid1.Row:=StringGrid1.MouseCoord(x,y).y;
StringGrid1.col:=StringGrid1.MouseCoord(x,y).X;;

end;
просто добавьте это)
MouseCoord(x,y)переводит координаты миши в координаты ячейки стрингрида
удачи
Ответ отправил: Bouffon (статус: 2-ой класс)
Ответ отправлен: 25.02.2008, 23:18
Оценка за ответ: 5
Комментарий оценки:
Большое спасибо. Именно то, что мне было нужно. Все работает.

Отвечает: Delph
Здравствуйте, Vassea!

Предлагаю тот ответ, который дал на такой же вопрос эксперт Louken. На мой взгляд - очень чёткое решение (смотрите приложение).

Для начала отключите PopupMenu, которое будем вызывать самостоятельно.

Приложение:

---------
Сомневайся во всём! Реальность часто бывает не такой, как мы о ней думаем.

Ответ отправил: Delph (статус: Студент)
Ответ отправлен: 26.02.2008, 07:50
Оценка за ответ: 5
Комментарий оценки:
Спасибо.

Отвечает: Selya
Здравствуйте, Vassea!
Сейчас у вас ситуация такая: на форме StringGrid и к его свойству PopupMenu привязан некоторый PopupMenu.
Отвяжите его. В обработчике события OnMouseDown(OnMouseUp - в зависимости от ситуации) вызывайте PopupMenu1.Popup(X, Y) (см.прил.)
Координата ячейки будет в lCol, lRow.

Честно скажу, есть один минус: сначала надо щёлкнуть на клетке левой кнопкой, чтобы поместить в неё фокус, а затем правой, чтобы вызвать PopupMenu. Пока не нашёл как от этого избавится.

Приложение:

Ответ отправил: Selya (статус: 8-ой класс)
Ответ отправлен: 26.02.2008, 09:51


Вопрос № 124.880
Уважаемые коллеги, как заставить сайт определять мою программу, как стандартный вэббраузер типа (IE, Opera, Mozila, FireFox и т.д.) Использую TWebBrowser
Отправлен: 26.02.2008, 10:59
Вопрос задал: Warrior (статус: 3-ий класс)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 4)

Отвечает: Selya
Здравствуйте, Warrior!
TWebBrowser использует движок IE, так что скорее всего сайт будет определять вашу программу как IE.
Ответ отправил: Selya (статус: 8-ой класс)
Ответ отправлен: 26.02.2008, 14:31


Вы имеете возможность оценить этот выпуск рассылки.
Нам очень важно Ваше мнение!
Оценить этот выпуск рассылки >>

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

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

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

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

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


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


© 2001-2008, Портал RusFAQ.ru, Россия, Москва.
Авторское право: ООО "Мастер-Эксперт Про"
Техподдержка портала, тел.: +7 (926) 535-23-31
Хостинг: "Московский хостер"
Поддержка: "Московский дизайнер"
Авторские права | Реклама на портале
Версия системы: 4.71 от 27.02.2008
Яндекс Rambler's Top100
RusFAQ.ru | MosHoster.ru | MosDesigner.ru | RusIRC.ru
Kalashnikoff.ru | RadioLeader.ru | RusFUCK.ru

В избранное