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

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


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

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

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

Выпуск № 1035
от 15.01.2008, 13:35

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

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


Вопрос № 117617: Здравствуйте. Подскажите, пожалуйста, как получить при помощи ping более точное время прохождения пакета туда-обратно. Использовала библиотеку Indy 9. свойство TIdIcmpClient - ReplyStatus.MsRoundTripTime (но при помощи него можно регистриров...
Вопрос № 117648: Добрый день! Делаю свой класс, не могу разобраться с событиями. Вкраце его суть: динамически создает на форме кнопки (и удаляет тоже), при нажатии на какую-либо кнопку, срабатыет событие, общее для всех кнопок, в котором определяется индекс н...
Вопрос № 117683: Здравствуйте, уважаемые эксперты! Читаю книгу о COM-объектах. И дело в том, что эта книга рассчитана на людей, когда-либо работавших с этим. А я - первый раз. Написано: устанавливаем метод окна рисования: function SetWindow( Handle: Integer):...
Вопрос № 117748: Здравствуйте, господа Эксперты! Вопрос по StringGrid. К нему подключен компонент PopupMenu. Мне нужно, чтобы при щелчке правой кнопкой по ячейке StringGrid'а сначала активировалась ячейка, оказавшаяся под курсором мыши, и лишь после этого пр...
Вопрос № 117772: Превед Вам огромный уважаемые эксперты, боюсь спрасить, но спрашиваю, так как деваться некуда. ПОМОГИТЕ МНЕ ПОЖАЛУЙСТА в n- количество раз. Объясняю в чём дело: Ёсть форма, на ней стоит Image1 и Timer1 есть одна папочка, содержащая, bmp'шки. Как бы м...

Вопрос № 117.617
Здравствуйте.

Подскажите, пожалуйста, как получить при помощи ping более точное время прохождения пакета туда-обратно. Использовала библиотеку Indy 9. свойство TIdIcmpClient - ReplyStatus.MsRoundTripTime (но при помощи него можно регистрировать ответы кратные 1 ms). Хотелось бы 0.001 ms - это возможно?
Отправлен: 09.01.2008, 13:40
Вопрос задал: Каритан Константин Анатольевич (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Drbear
Здравствуйте, Каритан Константин Анатольевич!

Если не ошибаюсь ping отображает время прохождения пакета в ms. Для более точного измерения можно использовать серии ping и находить среднее значение.
Ответ отправил: Drbear (статус: 5-ый класс)
Ответ отправлен: 10.01.2008, 09:57
Оценка за ответ: 2


Вопрос № 117.648
Добрый день!
Делаю свой класс, не могу разобраться с событиями.
Вкраце его суть: динамически создает на форме кнопки (и удаляет тоже), при нажатии на какую-либо кнопку, срабатыет событие, общее для всех кнопок, в котором определяется индекс нажатой кнопки, вот так:

procedure TDynamicSheet.SheetButtonClick(Sender: TObject);
var index:byte;
begin
Index:=(Sender as TButton).Tag;
.......
end;

Но это работает только внутри класса. Как организовать событие кнопки в коде формы?
Отправлен: 09.01.2008, 16:58
Вопрос задал: Red Spirit (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Louken
Здравствуйте, Red Spirit!

Это работает только внутри класса потому, что Вы не передаете обработку события дальше. Нужно определить событие в Вашем классе и установить обработчик этого события в коде формы.

Доработайте свой класс так, как показано в приложении.
Теперь событие OnSheetButtonClick будет дублировать событие обрабатываемое методом SheetButtonClick Вашего класса.
Теперь в коде формы установите обработчик события OnSheetButtonClick и все.

Приложение:

Ответ отправил: Louken (статус: Студент)
Ответ отправлен: 09.01.2008, 21:46
Оценка за ответ: 5
Комментарий оценки:
То что надо!


Вопрос № 117.683
Здравствуйте, уважаемые эксперты! Читаю книгу о COM-объектах. И дело в том, что эта книга рассчитана на людей, когда-либо работавших с этим. А я - первый раз. Написано: устанавливаем метод окна рисования:
function SetWindow(
Handle: Integer):
HResult; stdcall;
Я создаю интерфейс, обзываю его, в нем создаю метод и его тоже обзываю. В итоге в исходнике библиотеки получаю:
function SetWindow: HResult; stdcall; тогда как надо, чтобы у этой функции были вышеуказанные параметры. Подскажите, куда нужно вводить параметры, чтобы они появились в исходнике?
Заранее извиняюсь, если некорректно выражался, поскольку с COM работаю впервые и из-за этой ситации не могу дальше развиваться.
Спасибо за внимание!
Отправлен: 09.01.2008, 22:11
Вопрос задал: RegolusX (статус: 2-ой класс)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 4)

Отвечает: Selya
Здравствуйте, RegolusX!
В мастере создания библиотеки типов (Type Library) щёлкни на имени метода, затем на вкладке Parametrs (справа). Там добавляй параметры. В архивчике пара хороших статей, как создавать COM-объекты в Delphi: http://slil.ru/25337271
Ответ отправил: Selya (статус: 3-ий класс)
Ответ отправлен: 10.01.2008, 07:57
Оценка за ответ: 5
Комментарий оценки:
Большое спасибо за ответ и за статью! Все получилось. Теперь могу дальше программировать!


Вопрос № 117.748
Здравствуйте, господа Эксперты!

Вопрос по StringGrid. К нему подключен компонент PopupMenu. Мне нужно, чтобы при щелчке правой кнопкой по ячейке StringGrid'а сначала активировалась ячейка, оказавшаяся под курсором мыши, и лишь после этого происходила активация всплывающего меню (именно так действует DBGrid). По умолчанию StringGrid активирует нужную ячейку лишь щелчком левой кнопки, что неудобно для пользователя - приходится делать два щелчка вместо одного. Как можно добиться нужного поведения?
Отправлен: 10.01.2008, 11:17
Вопрос задал: Delph (статус: Студент)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 0)

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

Для начала, отключите PopupMenu, его будете вызывать самостоятельно и вставьте такой нехитрый обработчик события мыши OnMouseUp:

Приложение:

Ответ отправил: Louken (статус: Студент)
Ответ отправлен: 10.01.2008, 11:47
Оценка за ответ: 5
Комментарий оценки:
ОГРОМНОЕ Вам СПАСИБО!!! Хотел было задать ещё один вопрос, связанный с подавлением меню в случае пустых ячеек, но Вы ответили и на него! С Вашей помощью я смог полностью решить свою проблему.

Отвечает: Дегтярев Антон Александрович
Здравствуйте, Delph!

Вариант немного грубоват но он работает
в событии onMouseUp в sringgrid напишите слудующий код

if Button = mbLeft then
PopUpMenu1.Popup(form1.Left + stringgrid1.Left + x,form1.Top + stringgrid1.Top + y);
---------
Все грибы съедобны, но некоторые - только раз в жизни
Ответ отправил: Дегтярев Антон Александрович (статус: 3-ий класс)
Ответ отправлен: 10.01.2008, 11:53
Оценка за ответ: 5
Комментарий оценки:
Вариант хоть и грубоват, но тоже интересен, поскольку показывает ещё один путь решения проблемы. Спасибо!

Отвечает: Евсюков Виталий Евгеньевич
Здравствуйте, Delph!
Обработайте событие mousedown. Всю необходимую инфу я нашел в хелпе.

Приложение:

---------
I Aear can ve na Mar

Ответ отправил: Евсюков Виталий Евгеньевич (статус: 3-ий класс)
Ответ отправлен: 10.01.2008, 12:51
Оценка за ответ: 4
Комментарий оценки:
По сути повторён ответ Louken\'а. То что Louken предложил обрабатывать отпускание мышиной кнопки, а Вы - нажатие, считаю несущественной разницой.


Вопрос № 117.772
Превед Вам огромный уважаемые эксперты, боюсь спрасить, но спрашиваю, так как деваться некуда. ПОМОГИТЕ МНЕ ПОЖАЛУЙСТА в n- количество раз. Объясняю в чём дело: Ёсть форма, на ней стоит Image1 и Timer1 есть одна папочка, содержащая, bmp'шки. Как бы мне поочерёдно их показать? Они не большого размера, единственное чтоб если менялся размер, так это у Image1. Спасибо огромное заранее. Суважением sefiros
Отправлен: 10.01.2008, 13:14
Вопрос задал: Sefiros (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 2)

Отвечает: Raptor3
Здравствуйте, Sefiros!

во простой вариант решения

со вкладки win 3.1 бросаем компонент tFileListBox

Убрано исправление.
-----
∙ Отредактировал: sir henry (Академик)
∙ Дата редактирования: 10.01.2008, 19:38

Приложение:

---------
Программист - это человек который решает проблему, о которой вы не знаете, способом который вы не понимаете

Ответ отправил: Raptor3 (статус: 4-ый класс)
Ответ отправлен: 10.01.2008, 13:36
Оценка за ответ: 5
Комментарий оценки:
Простой, дык можеть быть простой, делов том, что на Image ничаге не отображается, а аотображается на этом tFileListBox, и то не картинки, а присутствующие при проекте файлы, но не картинки......мож я не так чаго делаю, я просто вместо крет поставил на активейт......

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

Предлагаю тагой пример. На форме TImage и TTimer. У Image1 AutoSize := True остальные параметры по умолчанию. У Timer1 Enabled := False. Код в примере

Приложение:

Ответ отправил: Drbear (статус: 5-ый класс)
Ответ отправлен: 10.01.2008, 13:42
Оценка за ответ: 5
Комментарий оценки:
Спасиб, надеюсь мене ето помогет

Отвечает: Genia007
Здравствуйте, Sefiros!
Вот вам пример рабочего кода
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
Image1: TImage;
Timer1: TTimer;
foto: TListBox;
procedure Button1Click(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1; i:word;

implementation

uses ShellAPI, ShlObj;// Нужны для работы с диалогом выбора
{$R *.dfm}

procedure FillBMPFileList(Folder: string; sl: TStrings);// процедура добавления файлов в список
var Rec : TSearchRec;
begin
sl.Clear;
if SysUtils.FindFirst(Folder + '*.bmp', faAnyFile, Rec) = 0 then
try
repeat
sl.Add(Folder+Rec.Name);
until SysUtils.FindNext(Rec) <> 0;
finally
SysUtils.FindClose(Rec);
end;
end;

function BrowseDialog(const Title: string; const Flag: integer): string;// вывод диалога выбора файлов
var
lpItemID : PItemIDList;
BrowseInfo : TBrowseInfo;
DisplayName : array[0..MAX_PATH] of char;
TempPath : array[0..MAX_PATH] of char;
begin
Result:='';
FillChar(BrowseInfo, sizeof(TBrowseInfo), #0);
with BrowseInfo do begin
hwndOwner := form1.Handle;
pszDisplayName := @DisplayName;
lpszTitle := PChar(Title);
ulFlags := Flag;
end;
lpItemID := SHBrowseForFolder(BrowseInfo);
if lpItemId <> nil then begin
SHGetPathFromIDList(lpItemID, TempPath);
Result := IncludeTrailingBackslash(TempPath);
GlobalFreePtr(lpItemID);
end;
end;

procedure TForm1.Button1Click(Sender: TObject);// запуск ункции вывода файлов
var fs : string;
begin
fs := BrowseDialog('Выберите папку с BMP файлами', BIF_RETURNONLYFSDIRS);
if fs = '' then Exit;
FillBMPFileList(fs, foto.Items);
timer1.Enabled:=true
end;

procedure TForm1.Timer1Timer(Sender: TObject);// вывод картинок на image
begin
if i= foto.Count-1 then exit;
image1.Picture.LoadFromFile(foto.Items.strings[i]);
inc(i);
end;

end.
Ответ отправил: Genia007 (статус: 4-ый класс)
Ответ отправлен: 11.01.2008, 11:39


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

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

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

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

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

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


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


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

В избранное