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

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

Автор: dred2k
Дата сообщения: 10.12.2010 11:23
ShIvADeSt, глядя на первоначальную тему вопроса Maks150988, могу предположить - есть ли уверенность, что в контроле что-то выбрано. Комбик может работать и так, что выбранного итема не будет.

Автор: EugeneBoss3
Дата сообщения: 11.12.2010 05:30
Знатоки, может кто подскажет пример как реализовать всплывающее окно по типу TComboBox с компонентом TButtonEdit?
Автор: Frodo_Torbins
Дата сообщения: 11.12.2010 11:48
EugeneBoss3
Создайте еще одну форму без рамки, и по клику показывайте ее в нужном месте.
Автор: oRac001
Дата сообщения: 11.12.2010 14:18
Пишу в Delphi небольшую программу, столкнулся с неожиданной проблемой. При работе программы все процедуры компонента MainMenu выполняются ровно один раз, т.е. если юзер выбирает диалог "сохранить файл" во второй раз, выбивает ошибка "Access violation at address 00457DB9 in module 'project1.exe'. Read of adress 0000000'. Подскажите, пожалуйста, что бы это могло быть.
Автор: tanaseduard
Дата сообщения: 11.12.2010 14:24
oRac001
Код в студию.
Автор: mcdie
Дата сообщения: 13.12.2010 17:16
MapiSendMail перестал правильно работать у меня на XР, не выскакивает почтовая прога с аттачем и на других компах XP тоже не работает. На 2000й винде всё нормально работает. Вот код:

Код:
var
MapiToDesc: TMapiRecipDesc;
MapiFileDesc: array of TMapiFileDesc;
MapiMessage: TMapiMessage;
email : string;
filename:string;
begin
...
filename:='C:\1.txt';
email := someemail@mail.ru;
FillChar(MapiToDesc, SizeOf(MapiToDesc), 0);
with MapiToDesc do begin
ulReserved:= 0;
ulRecipClass:=MAPI_TO;
if email <> '' then
begin
lpszName := @email[1];
lpszAddress := @email[1];
end
else
begin
lpszName:=nil;
lpszAddress:=nil;
end;
ulEIDSize:= 0;
lpEntryID:= nil;
end;

SetLength(MapiFileDesc, 1);
with MapiFileDesc[0] do
begin
ulReserved:= 0;
flFlags:= 0;
nPosition:= 0;
lpszPathName:= PChar(fileName);
lpszFileName:= nil;
lpFileType:= nil;
end;

FillChar(MapiMessage, SizeOf(MapiMessage), 0);
with MapiMessage do
begin
ulReserved := 0;
lpszSubject:=nil;
lpszNoteText:=nil;
lpszMessageType := nil;
lpszDateReceived := nil;
lpszConversationID := nil;
flFlags:=MAPI_RECEIPT_REQUESTED;
lpOriginator := nil;
nRecipCount:=1;
lpRecips:=@MapiToDesc;
nFileCount := 1;
lpFiles := @MapiFileDesc[0];
end;

MapiSendMail(0, Application.Handle, MapiMessage, 0, 0);
end;
Автор: Frodo_Torbins
Дата сообщения: 13.12.2010 18:12
mcdie
Можно через командную строку почтовик вызвать:
Код: ShellExecute(Self.Handle, nil, '"mailto:somebody@example.com?subject=This is ' +
'the subject&body=The message''s first paragraph.%0ASecond paragraph.%0AThird ' +
'Paragraph."', nil, nil, SW_SHOWNORMAL);
Автор: mcdie
Дата сообщения: 14.12.2010 08:26
Frodo_Torbins
Спасибо, мне этот способ ивзвестен, но нужно с вложением. Низнаю что произошло, может с MAPI32.dll чтото в XP.
Автор: ShIvADeSt
Дата сообщения: 15.12.2010 00:54
mcdie

Цитата:
Спасибо, мне этот способ ивзвестен, но нужно с вложением. Низнаю что произошло, может с MAPI32.dll чтото в XP.

Я посмотрел твой код и сравнил со своим - достаточно много различий, у тебя нет MAPILogon и прочие мелочи. Свой код я брал отсюда http://www.delphisources.ru/pages/faq/base/mapi_with_attach.html
у меня все работает, при этом проверял и в случае с The Bat и Outlook.
Автор: EugeneBoss3
Дата сообщения: 16.12.2010 10:52
Frodo_Torbins

Цитата:
Создайте еще одну форму без рамки, и по клику показывайте ее в нужном месте

Сейчас так и решаю проблему, но хотелось бы в виде компонента, т.е. нужно пример реализации всплывающего окна по типу TComboBox, но без стандартной стрелки вниз.
Автор: Frodo_Torbins
Дата сообщения: 16.12.2010 15:30
EugeneBoss3
Вот вроде чтото похожее: http://delphikingdom.com/asp/viewitem.asp?catalogid=1213
Автор: alex1334
Дата сообщения: 18.12.2010 17:28
В дэльфи 7 хотел изменить курсор по нажатию кнопки мыши. В обработчике события нажития кнопки командой statusBar1.Cursor:=crHSplit но курсор изменяет свой вид только после отпускания кнопки. Как раз в обработчике отпускания кнопки я востанавливаю вид курсора statusBar1.Cursor := crdefault
Как поступить Если мне надо чтобы вид курсора изменился пока удерживаеться нажатой кнопка мыши
Автор: Frodo_Torbins
Дата сообщения: 18.12.2010 22:47
alex1334
WinAPI-шный SetCursor всегда в вашем распоряжении. А в D2010 у меня еще такой код работает: "Panel1.Perform(WM_SetCursor, Panel1.Handle, HTCLIENT);" (после установки нужного курсора).
Автор: EugeneBoss3
Дата сообщения: 19.12.2010 04:18
Frodo_Torbins
RyComboControls от Алексея Румянцева я уже пробовал, но очень много багов. Может еще что-нить похожее подскажете?
Автор: Frodo_Torbins
Дата сообщения: 19.12.2010 16:25
EugeneBoss3
Там есть еще несколько вариантов от других авторов. А безбажные версии наверно лучше искать в больших пакетах типа ТМС.
Автор: TechnoDreamer
Дата сообщения: 21.12.2010 22:26
alex1334
Да, есть такое, лечится легко.

Код:
procedure TForm1.Panel1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X,
Y: Integer);
begin
Cursor := crHSplit;
Perform(WM_SETCURSOR, Handle, HTCLIENT);
end;
Автор: StalkerSoftware
Дата сообщения: 22.12.2010 14:33
Hi All,

Word 2003 SP3.

Есть такой код:

Код:
var
FOleWord :ОleVariant;

try
FOleWord := GetActiveOleObject('Word.Application');
except
FOleWord := CreateOleObject('Word.Application');
end;

FOleWord.Documents.Add(EmptyParam);

FOleWord.Selection.InsertFile(FileName := 'd:\x.doc');
FOleWord.ActiveWindow.Activate;
FOleWord.Activate;
Автор: Wahnsinn
Дата сообщения: 22.12.2010 20:33
Столкнулся с такой проблемой - в случае, если в программе было создано подключение к базе (используя odac), а же потом создана главная форма приложения, то создание письма через MAPI (через весьма распространенную функцию function SendEMail(Handle: THandle; Mail: TStrings): Cardinal; или же сторонние компоненты) возвращает код 2 (MAPI_E_FAILURE),
Как собственно попытаться обойти это, не меняя порядок создания форм.
Автор: Frodo_Torbins
Дата сообщения: 22.12.2010 20:51
Wahnsinn
Чуть выше на этой странице я предлагал альтернативный вариант, возможно он вам подойдет?
Автор: Wahnsinn
Дата сообщения: 22.12.2010 21:05
Frodo_Torbins
к сожалению нет, требуется вложение документов.
Автор: ShIvADeSt
Дата сообщения: 23.12.2010 01:41
Wahnsinn
А отладчиком не пробовали смотреть, что при этом происходит? Как вариант, сделайте библиотеку только для отправки почты и вызывайте функцию отправки из нее (должно решить проблему). Либо только путем отладки смотреть где что передается и допиливание до рабочего состояния.
ЗЫ у меня вообще из консоли отправка идет и нормально все Кстати если используется оутлук, то можно отправлять через ОЛЕ аутлука - более кошерно получается.
Автор: mcdie
Дата сообщения: 23.12.2010 12:48
Wahnsinn
У меня тоже проблема с MAPI возникла, на части компьютеров работало, на части нет. Проблему решил возможностью в настройках добавления дополнительного отсылания писем через Ole Lotus Notes. (используемый почтовик)
Кстати у меня тоже к базе данных Oracle подключение, только через DOA и с очередностью форм проблем никогда не возникало.
Автор: Wahnsinn
Дата сообщения: 23.12.2010 12:51
ShIvADeSt
Через библиотеку я попробовал сразу же, результат тот же. Из любой программы вызов идет нормально, из подключенной к базе - нет.
Пока я вывел во внешний com-сервер, но хотелось бы избавиться от него.
Автор: mcdie
Дата сообщения: 23.12.2010 13:03
Wahnsinn
Если ты создаш форму с кнопкой1 (оптравить письмо) и кнопкой2 (подключится/отключится от базы (через ODAC)). Будет ли работать отправка при включенном и выключенном соединении?
Автор: Wahnsinn
Дата сообщения: 23.12.2010 14:49
mcdie
В случае если подключение к базе идет после запуска формы, все работает при любом раскладе. Но если же подключение происходит раньше - ничего уже не помогает.


Добавлено:
Вот простейший пример с 2 вариантами (+ исходник компонента TMapiControl, либо просто проигнорировать все ошибки связанные с ним)
http://files.mail.ru/ZB7028
В случае, если в ini файле параметр VID = 1, подключения к базе не происходит и все будет/должно работать. Параметр 0, соотвественно запустит подключение к базе по строке подключения CONNECT и к примеру у меня уже все перестает работать. Последовательность создания модулей в проекте важна, я особо повлиять не могу.
Автор: ShIvADeSt
Дата сообщения: 24.12.2010 01:30
Wahnsinn
Повторю вопрос, почему бы не попробовать OLE Outlookа? Достаточно все просто делается и результат неплохой. Единственный минус - надо ставить оутлук 2007, чтобы избежать идиотского предупреждения, что сторонняя программа пытается поюзать оутглюк.
Автор: Wahnsinn
Дата сообщения: 24.12.2010 10:41
ShIvADeSt
Почтовики разные. Писать частные случаи случаи неочень, хотя конечно можно проверять почтовик и либо прежняя функция или же частный случай - 2003 оутлук.
Тк протестил - такая проблема только для 2003 оутлука, для всего остального работает. Причем ошибка идет, когда требуется показать письмо пользователю.
Автор: mcdie
Дата сообщения: 24.12.2010 12:29
Wahnsinn
Запустил твой пример. Работает при подключении через 1 и через 0 (подключение к Оracle). Клиент по умолчанию пробовал Lotus Notes и OutLook 2007. Поэтому непонятно что там у тебя, может в реестре не так прописано что нибудь.
Автор: Wahnsinn
Дата сообщения: 24.12.2010 13:25
mcdie
так в предыдущем сообщении я написал,что проблема под 2003 оутлуком только.
а в реестре кажется все стандартно
DLLPath mapi32.dll
DLLPathEx C:\Program Files\Common Files\SYSTEM\MSMAPI\1049\msmapi32.dll
Автор: Man_Without_Face
Дата сообщения: 24.12.2010 14:55
Доброго времени суток. Подскажите как правильно сделать запись:
через AdoCommand делаю запись в дбф:
cmd.CommandText := 'CREATE DBF СSale.dbf codepage=866 '+
(Descript ca(25,0))
cmd.Execute;
----------------------------------------------------------------------------
card_number : string

cmd.CommandText := 'INSERT INTO CSale.dbf (Descript)
VALUES ('+card_num+');

cmd.Execute;

Выдает ошибку несовместимости типов.
Пробовал и через array of char и разное количество ковычек ставил.
Если строку записать не через переменную то все ок. Спасибо.

Страницы: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374

Предыдущая тема: MPO File


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