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

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


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

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

Выпуск № 569
от 22.08.2006, 07:35

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


Вопрос № 52280: Здравствуйте уважаемые эксперты ! Подскажите: 1) есть ли готовый драйвер для Delphi, с помощью которого можно вести обмен данными с устройством через порт USB из программы; 2) можно ли вообще из программы написанной на Delphi вести обмен...
Вопрос № 52290: Эксперты, подскажите - не знаю с чего начать... Нужно на форме сделать матрицу (размерность запрашивается) и по щелчку на ячейке матрицы она либо меняла цвет либо как то по другому отображала - по повторному щелчку инвертировалась. (т.е. сос...
Вопрос № 52317: В свойствах проекта задаеться информация о разработчике, версии продукта, build... А как сделать что бы эти вседения можно было отобразить в программе? Если можно то с небольшим примером....
Вопрос № 52357: Здравствуйте, уважаемые эксперты! Вопрос такой: Есть Label фиксированных размеров, с установленным начальным шрифтом и AutoSize:=false. Как проверить помещается ли текст в Label? И если не помещается, то уменьшать размер шрифта до тех пор, п...
Вопрос № 52374: Здравствуйте, Уважаемые эксперты! В папке с моей программой находится текстовый файл как его скопировать в папку Temp Windows'a. Проблема заключается в том, как найти путь к этой папке Temp. Явное указание пути типа C:WindowsTemp не подход...

Вопрос № 52.280
Здравствуйте уважаемые эксперты !
Подскажите:
1) есть ли готовый драйвер для Delphi, с помощью которого можно вести обмен данными с устройством через порт USB из программы;
2) можно ли вообще из программы написанной на Delphi вести обмен данными с устройством через порт USB и если да, то как это запрограммировать ?
Заранее всех благодарю.
Геннадий.
Отправлен: 16.08.2006, 08:11
Вопрос задал: Geb2003 (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Савенко Вадим Иванович
Здравствуйте, Geb2003!
Посмотрите здесь:

http://www.vr-online.ru/download.php?det=41

Это компонент с исходниками, размер 518 Кб.
Ответ отправил: Савенко Вадим Иванович (статус: 7-ой класс)
Ответ отправлен: 16.08.2006, 08:35
Оценка за ответ: 5


Вопрос № 52.290
Эксперты, подскажите - не знаю с чего начать...

Нужно на форме сделать матрицу (размерность запрашивается) и по щелчку на ячейке матрицы она либо меняла цвет либо как то по другому отображала - по повторному щелчку инвертировалась. (т.е. состояние ячейки тока два выделена не выделена). И что бы состояние яцейки можно было изменить не только щелчком но и программно...

Ну например в Image Editor тот что в комплекте с Delphi идет - только мне нужно гораздо проще... Подскажите может компонент какой готовый есть или в какую сторону копать? Буду благодарен за любые ответы !
Отправлен: 16.08.2006, 09:18
Вопрос задал: Sniffer (статус: Студент)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: sir henry
Здравствуйте, Sniffer!
Непонятно назначение матрицы, но можно сделать так:
1. Объявить безразмерный массив типа TButton,
2. Ввести програмно кол-во элементов матрицы.
3. С помощью SetLength() установить размер массива по введенным значениям.
4. Записать процедуру для OnClick кнопок. В ней будет что-то типа следующего:
Procedure ButtonsOnClick(Sender: TObject);
Begin
If (Sender As TButton).Color=clBtnFace Then {Это стандартный цвет}
(Sender As TButton).Color:=clBlue {Меняем цвет на другой}
Else
(Sender As TButton).Color=clBtnFace; {Иначе опять стандартный ставим}
End;
4. Програмно создать кнопки на форме. Здесь размеры и координаты Вы уж сами подберете. При создании назначаем им нашу процедуру:
Var
MyButtons: array of TButtons;
Begin
SetLength(MyButtons, Row, Column);
For i:=0 To Row Do
For j:=0 To Column Do
Begin
MyButtons[i, j]:=TButton.Create(Form1);
MyButtons[i, j].Parent:=Form1;
{Далее определяем координаты и размеры}
...
MyButtons[i, j].OnClick:=ButtonsOnClick; {Назначаем процедуру на нажатие кнопки}
MyButtons[i, j].Visible:=True;
End;
End;
Ну вот, в принципе, и все.
Ответ отправил: sir henry (статус: Академик)
Россия, Красноярск
----
Ответ отправлен: 16.08.2006, 10:36
Оценка за ответ: 5
Комментарий оценки:
Спасибо !!!! Итнересный вариант !


Вопрос № 52.317
В свойствах проекта задаеться информация о разработчике, версии продукта, build... А как сделать что бы эти вседения можно было отобразить в программе? Если можно то с небольшим примером.
Отправлен: 16.08.2006, 12:16
Вопрос задал: Пепеляев Александр Павлович (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Ерёмин Андрей
Здравствуйте, Пепеляев Александр Павлович!
Вот, нашёл пример, как прочитать версию программы. Код функции в приложении. А использовать так:
 label1.Caption:=FileVersion('C:WINDOWSexplorer.exe');
По поводу остальных данных пока что ничего сказать не могу.
Удачи!

Приложение:

---------
Нет правила без исключений. Правило без исключений - исключение из правил.

Ответ отправил: Ерёмин Андрей (статус: Профессор)
Россия, Тула
WWW: Программирование на DELPHI: Всё для программиста.
ICQ: 286837644
----
Ответ отправлен: 16.08.2006, 12:26

Отвечает: Coupler
Здравствуйте, Пепеляев Александр Павлович!
Посмотрите здесь: www.delphiworld.narod.ru
По поводу Version info - в вопросе 50702:
http://rusfaq.ru/info/question/50702

Приложение:

Ответ отправил: Coupler (статус: Студент)
Ответ отправлен: 16.08.2006, 12:59

Отвечает: Mexes
Здравствуйте, Пепеляев Александр Павлович!
Вот пример из хелпаря Delphi.
Поясню, что в второй параметр функции VerQueryValue должен иметь вид StringFileInfoAAAABBBBCCCC, где
AAAA - Win32 Language ID (Russian=$0419) - 4 цифры хекс-кода;
BBBB - Charset ID (win1251=$04E3) - 4 цифры хекс-кода;
CCCC - название ключа (CompanyName, FileVersion и т. п.) - строка.

Для более предметных знаний обратитесь к MSDN, функции:
GetFileVersionInfo
GetFileVersionInfoSize
VerFindFile
VerInstallFile
VerLanguageName
VerQueryValue

Приложение:

Ответ отправил: Mexes (статус: 1-ый класс)
Ответ отправлен: 16.08.2006, 18:15


Вопрос № 52.357
Здравствуйте, уважаемые эксперты!
Вопрос такой: Есть Label фиксированных размеров, с установленным начальным шрифтом и AutoSize:=false.
Как проверить помещается ли текст в Label? И если не помещается, то уменьшать размер шрифта до тех пор, пока текст полностью не поместится? Если это невозможно, то какие компоненты такое поддерживают? И чтобы была возможность выравнивать текст по центру как по вертикали, так и по горизонтали, а также перенос по словам.
Заранее спасибо.
Отправлен: 16.08.2006, 20:15
Вопрос задал: Белозеров Виталий (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Mexes
Здравствуйте, Белозеров Виталий!
Помещается ли текст можно проверить, сравнив Label.Width и Label.Canvas.TextWidth(Label.Caption).
Размер шрифта можно регулировать через Label.Font.Size, только надо указать TrueType-шрифт, например, Microsoft Sans Serif вместо MS Sans Serif (который стоит по умолчанию).
Вертикальное выравнивание переключается через Label.Layout. Перенос по словам - свойство WordWrap.
Свойства TLabel легко выясняются изучением свойств в Object Inspector.
Ответ отправил: Mexes (статус: 1-ый класс)
Ответ отправлен: 16.08.2006, 20:33
Оценка за ответ: 5
Комментарий оценки:
Спасибо.

Отвечает: Mo-skin
Здравствуйте, Белозеров Виталий!
Как вариант еще попробовать RichEdit с
color=clBtnFace, Borderstyle="bsNone," ReadOnly = True,
тогда вообще можно творить чудеса!
Ответ отправил: Mo-skin (статус: Посетитель)
Ответ отправлен: 16.08.2006, 21:41

Отвечает: Morgen_krsk
Здравствуйте, Белозеров Виталий!
С использованием RichEdit у вас возникают ряд других нюансов
1. Первое и самое главное XPManifest работать не будет как ни старайся :(
2. Выравнивание по вертикали по-моему установить в RichEdit нельзя (вру конечно извратиться можно всегда)
3. Можно будет выделить курсором текст внутри RichEdit, с Label такого ест-но нет. А если сделать RichEdit.Enabled := False, то потеряются цвета ....

Так что используйте Label как писал выше Mexes
Ответ отправил: Morgen_krsk (статус: 2-ой класс)
Ответ отправлен: 17.08.2006, 17:33


Вопрос № 52.374
Здравствуйте, Уважаемые эксперты!

В папке с моей программой находится текстовый файл как его скопировать в папку Temp Windows'a. Проблема заключается в том, как найти путь к этой папке Temp. Явное указание пути типа C:WindowsTemp не подходит.
Отправлен: 17.08.2006, 01:22
Вопрос задал: Solovej (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Mexes
Здравствуйте, Solovej!
В Windows этот путь определяется переменной окружения Temp.
TempPath:=GetEnvironmentVariable('Temp'); //Модуль SysUtils
Ответ отправил: Mexes (статус: 1-ый класс)
Ответ отправлен: 17.08.2006, 01:32

Отвечает: Савенко Вадим Иванович
Здравствуйте, Solovej!
Скопировать можно так:

uses ... ShellAPI;

function CopyFiles(Handle: HWND; FSource : string; FTarget : string; Move: boolean; AutoRename: Boolean) : Integer;
var
SHFileOpStruct : TSHFileOpStruct;
begin
with SHFileOpStruct do
begin
Wnd := Handle;
wFunc := FO_COPY;
pFrom := PChar(FSource);
pTo := PChar(FTarget);
fFlags := 0;
fAnyOperationsAborted := False;
hNameMappings := nil;
lpszProgressTitle := nil;
end;
Result := SHFileOperation( SHFileOpStruct );
end;

procedure TForm1.Button1Click(Sender: TOdject);
var
Target, Source: string;
begin
Target:= GetEnvironmentVariable('Temp');
Target:= Target + '' + #0 + #0;
Source:= 'C:Directoryfile.txt' + #0 + #0;
CopyFiles(Handle, Source, Target, false, false);
end;
Ответ отправил: Савенко Вадим Иванович (статус: 7-ой класс)
Ответ отправлен: 17.08.2006, 07:57
Оценка за ответ: 5

Отвечает: D.M.
Здравствуйте, Solovej!
Вот еще один способ получить Temp папку

dirP: PChar; // Путь к папке temp
Res: Cardinal; // Вроде как длина полученной строки (могу наврать - точно не помню)
DirP := StrAlloc(MAX_PATH);
Res := GetTempPath(MAX_PATH,DirP );
---------
Зёзики руллллят :)
Ответ отправил: D.M. (статус: 2-ой класс)
Ответ отправлен: 17.08.2006, 19:33


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

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

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

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

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

В избранное