Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Вопросы по Delphi (все версии) - часть 3

Автор: GreatOne
Дата сообщения: 03.07.2007 19:57
Andrey13Lord


Код: var buf:array[0..255] of char;
begin
GetWindowsDirectory(buf,sizeof(buf));
ShowMessage(buf);
end;
Автор: Andrey13Lord
Дата сообщения: 03.07.2007 20:06
GreatOne
спасибо за информацию!
Автор: SkifDS2005
Дата сообщения: 04.07.2007 07:05
Такая ситуация:
В приложении печать осуществляется, без использования стандартных диалогов, на принтер по умолчанию. Нужно сделать так, чтобы при установке галки в чекбоксе (к примеру) печать шла на другой принтер. В принципе я это сделал, но есть одна трабла: Если я снимаю эту галку, то печать по прежнему идет на другой принтер (не тот который изначально был принтером по умолчанию). И ка это забороть я не знаю. Может кто-нить помочь с вопросом?
Автор: RostY
Дата сообщения: 04.07.2007 08:44
SkifDS2005
попробуй
Printer.PrinterIndex:=-1; //использовать принтер по умолчанию
Автор: SkifDS2005
Дата сообщения: 04.07.2007 09:32
Спасибо. Работает. Только я не понимаю как?!

Так вот по этому условию:

if Printer.Printers[Printer.PrinterIndex] <> 'Datamax E-4203' then
Printer.PrinterIndex:=-1;

печать идет на принтер Datamax E-4203

а по условию:

if Printer.Printers[Printer.PrinterIndex] = 'Datamax E-4203' then
Printer.PrinterIndex:=-1;

на принтер, который изначально был принтером по умолчанию. Хотя если я что-то понимаю должно быть наоборот
Автор: RostY
Дата сообщения: 04.07.2007 12:25
потому что ты сам себя запутал. у тебя при любом условии будет идти печать на принтер по умолчанию, потому что ты устанавливаешь
Цитата:
Printer.PrinterIndex:=-1;


ты делай проверку чекбокса
if checkbox1.checked then
Printer.PrinterIndex:=.... // (здесь надо установить на какой принтер печатать)
else
Printer.PrinterIndex:=-1; //на принтер по умолчанию
Автор: GreatOne
Дата сообщения: 05.07.2007 08:53
Люди!! Подскажите плиз как создать в Delphi такую-же БД как MS Access, что-бы тоже были подчиненные таблицы, запросы, связи, каскадное обновление связанных полей и т.д.?? С помощью каких компонентов это можно реализовать??
Автор: MrZeRo
Дата сообщения: 05.07.2007 08:59
GreatOne
Delphi - это среда разработки, а не СУБД. Можно, конечно, создавать таблицы в виде компонентов TClientDataSet, сохранять их в бинарном формате или в XML и потом работать, но никаких запросов, связей, а тем более каскадных обновлений полей не будет.
Автор: xy
Дата сообщения: 05.07.2007 09:02
GreatOne
вам скорее в IBExpert надо дизайнером БД поиграться.. если вам конечно подойдет Interbase-подобная СУБД
а так вообще можно из Делфи к Аксесу коннектится ;)
Автор: GreatOne
Дата сообщения: 05.07.2007 09:44
Спасибо за наводки. А кто подскажет какие библиотеки нужно установить на компьютер без дельфи, чтобы на нем работала программа с компонентом TXMLDocument??? А то при запуске проги на компе выдает ошибку что мол xmldom вызывает ошибку??
Автор: vserd
Дата сообщения: 05.07.2007 09:58

SkifDS2005

Цитата:
if Printer.Printers[Printer.PrinterIndex] <> 'Datamax E-4203' then
Printer.PrinterIndex:=-1;

А чему равно значение Printer.Printers[Printer.PrinterIndex]?
Автор: Tantos
Дата сообщения: 05.07.2007 10:09
GreatOne, посмотри в сторону компонентов FIBPlus. База создается через TpFIBDatabase, а таблицы и связи - TpFIBQuery. Правда, зачем это тебе надо?
По поводу TXMLDocument - попробуй обновить MSXML на машине.
Автор: GreatOne
Дата сообщения: 05.07.2007 10:41
Tantos
Спасибо!

Добавлено:
А как изменить место расположения файла PDOXUSRS.NET при работе с paradox таблицей, чтобы он был в папке с прогой???

Добавлено:
Юзаю через DBE.
Автор: RostY
Дата сообщения: 05.07.2007 13:01
BDE admin - Configuration - Drivers - Native - Paradox - NET DIR.
в принципе, можно попробовать изменять программно етот параметр
Автор: GreatOne
Дата сообщения: 05.07.2007 13:17
RostY
Блин!!! У меня дальше Native ничего нету!!!
Автор: RostY
Дата сообщения: 05.07.2007 13:53
наверно, БДЕ криво стоит. Попробуй переустановить
Автор: SkifDS2005
Дата сообщения: 05.07.2007 14:00

Цитата:
А чему равно значение Printer.Printers[Printer.PrinterIndex]?


Это имя принтера с индексом PrinterIndex который перебирается в цикле от 0 до Printer.Printers.Count-1 (количество установленных в системе принтеров)
Автор: GreatOne
Дата сообщения: 06.07.2007 10:50
А как можно получить имена всех папок в директории?
Автор: relictus
Дата сообщения: 06.07.2007 10:57
Например вот так #


Добавлено:
Или так

Код: procedure GetSubDirs(const sRootDir: string; slt: TStrings);
var
srSearch: TSearchRec;
sSearchPath: string;
sltSub: TStrings;
i: Integer;
begin
sltSub := TStringList.Create;
slt.BeginUpdate;
try
sSearchPath := AddDirSeparator(sRootDir);
if FindFirst(sSearchPath + '*', faDirectory, srSearch) = 0 then
repeat
if ((srSearch.Attr and faDirectory) = faDirectory) and
(srSearch.Name <> '.') and
(srSearch.Name <> '..') then
begin
slt.Add(sSearchPath + srSearch.Name);
sltSub.Add(sSearchPath + srSearch.Name);
end;
until (FindNext(srSearch) <> 0);

FindClose(srSearch);

for i := 0 to sltSub.Count - 1 do
GetSubDirs(sltSub.Strings[i], slt);
finally
slt.EndUpdate;
FreeAndNil(sltSub);
end;
end;
Автор: GreatOne
Дата сообщения: 06.07.2007 11:29
relictus
Спасибо большое

Добавлено:
А как настроить TOpenDialog, чтобы он открывал папки?

Добавлено:
А не файлы.
Автор: MrZeRo
Дата сообщения: 06.07.2007 13:56
GreatOne
SHBrowseForFolder
Ты бы хоть книженцию какую прочел, или поискал хоть немного ...

Добавлено:
В гугле запрос "Delphi выбор папки" первой ссылкой дает пример рабочего кода
Автор: GreatOne
Дата сообщения: 06.07.2007 14:09
MrZeRo
Прост думал что у TOpenDialog есть такая опция, раз нету - я лучше тогда сам се забадяжу такой диалог.
А насчет гугла - то у меня тока этот сайт работает(не спрашивай почему)
Автор: MouseDriver
Дата сообщения: 08.07.2007 10:44
Пишу программу с использованием EventLog. Для создания описаний нужна программа mc.exe из комплекта Platform SDK. У кого есть поделитесь на sip2003[@]mail.ru или подскажите как можно скомпилировать описания событий средствами Delphi.
Автор: finger88
Дата сообщения: 08.07.2007 23:18
ребят, а есть у когонить перигсрация для ZIPtv 2007? Или любой другой ziptv, но зарегеный. Буду признателен!

finger.88 {sobaka} list.ru
Автор: SERGE_BLIZNUK
Дата сообщения: 09.07.2007 08:02
finger88
1) Вам с такими вопросами сюда - Коммерческие компоненты и утилиты для Delphi/BCB

2) там в шапке (это первое сообщение, которое показывается на каждой странице) темы есть "Полезная информация". Так если там покопаться, можно найти
ZipTV Compression Components 6.8.4 for Borland Developer Studio 2006 (Delphi for Win32)
Автор: finger88
Дата сообщения: 09.07.2007 11:06
SERGE_BLIZNUK
спасибо большое, колелга!
Автор: SpoinT
Дата сообщения: 11.07.2007 10:09
Возникла ситуация. Уже второй день никак не могу разрешить.

var
Form1: TForm1;
_it, _buf : Pointer;

w1,w2,w3: THandle;
ListView, Process: HWND;

i, Count, Pid, bw: cardinal;

it: TLVItem;
buf: array[0..32] of char;

***********

ListView := FindWindow('JetCar Class',nil);
ListView := FindWindowEx(ListView,0,'AfxFrameOrView42s',nil);
ListView := FindWindowEx(ListView,0,'SysListView32',nil);

Count := ListView_GetItemCount(listview);
GetWindowThreadProcessId(listview, pid);
Process := OpenProcess(PROCESS_VM_OPERATION or PROCESS_VM_READ or PROCESS_VM_WRITE or PROCESS_QUERY_INFORMATION, false, pid);

_it := PLVItem(VirtualAllocEx(process, nil, sizeof(TLVItem), MEM_COMMIT, PAGE_READWRITE));
_buf := pchar(VirtualAllocEx(process, nil, 512, MEM_COMMIT, PAGE_READWRITE));

it.cchTextMax := 255;
it.iSubItem := 0;

WriteProcessMemory(process, _it, @it, sizeof(TLVItem), bw);
for i:=0 to Count-1 do
begin
SendMessage(listview, LVM_GETITEMTEXT, i, lparam(_it));
ReadProcessMemory(process, _buf, @buf, 255, bw);

memo1.Lines.Add(buf);
end;


VirtualFreeEx(process, _it, 0, MEM_RELEASE);
VirtualFreeEx(process, _buf, 0, MEM_RELEASE);

end;


************************************
Как видно из примера, здесь идет получение текста из ЧУЖОГО ListView.

А теперь ВОПРОС! Как мне получить ID картинки из Item? ОЧЕНЬ желательно пример куска кода, а не мысли по поводу реализации, т.к. их уже было предостаточно
Автор: SpoinT
Дата сообщения: 11.07.2007 20:19
Вопрос снимается, все сделано
Автор: SERGE_BLIZNUK
Дата сообщения: 11.07.2007 21:41
SpoinT
Ну и поделилсь бы найденным решением... не то, чтобы прямо очень нужно было, просто любопытно...
Автор: SpoinT
Дата сообщения: 12.07.2007 09:52
SERGE_BLIZNUK
Обязательно, вечером только.

Теперь меня интересует получение текста из колонок и TreeView. У них просто нет мессаг ***_GETITEMTEXT. Было 2 способа на С++, переделал, но видимо код изначально работал криво. Буду признателен, если кто-нибудь поделиться своими идеями.

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667

Предыдущая тема: 1С: Конвертация данных 2.0


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.