ShIvADeSt, глядя на первоначальную тему вопроса Maks150988, могу предположить - есть ли уверенность, что в контроле что-то выбрано. Комбик может работать и так, что выбранного итема не будет.
» Вопросы по Delphi (до версии 2009) - часть 6
Знатоки, может кто подскажет пример как реализовать всплывающее окно по типу TComboBox с компонентом TButtonEdit?
EugeneBoss3
Создайте еще одну форму без рамки, и по клику показывайте ее в нужном месте.
Создайте еще одну форму без рамки, и по клику показывайте ее в нужном месте.
Пишу в Delphi небольшую программу, столкнулся с неожиданной проблемой. При работе программы все процедуры компонента MainMenu выполняются ровно один раз, т.е. если юзер выбирает диалог "сохранить файл" во второй раз, выбивает ошибка "Access violation at address 00457DB9 in module 'project1.exe'. Read of adress 0000000'. Подскажите, пожалуйста, что бы это могло быть.
oRac001
Код в студию.
Код в студию.
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;
Код:
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;
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);
Можно через командную строку почтовик вызвать:
Код: 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);
Frodo_Torbins
Спасибо, мне этот способ ивзвестен, но нужно с вложением. Низнаю что произошло, может с MAPI32.dll чтото в XP.
Спасибо, мне этот способ ивзвестен, но нужно с вложением. Низнаю что произошло, может с MAPI32.dll чтото в XP.
mcdie
Цитата:
Я посмотрел твой код и сравнил со своим - достаточно много различий, у тебя нет MAPILogon и прочие мелочи. Свой код я брал отсюда http://www.delphisources.ru/pages/faq/base/mapi_with_attach.html
у меня все работает, при этом проверял и в случае с The Bat и Outlook.
Цитата:
Спасибо, мне этот способ ивзвестен, но нужно с вложением. Низнаю что произошло, может с MAPI32.dll чтото в XP.
Я посмотрел твой код и сравнил со своим - достаточно много различий, у тебя нет MAPILogon и прочие мелочи. Свой код я брал отсюда http://www.delphisources.ru/pages/faq/base/mapi_with_attach.html
у меня все работает, при этом проверял и в случае с The Bat и Outlook.
Frodo_Torbins
Цитата:
Сейчас так и решаю проблему, но хотелось бы в виде компонента, т.е. нужно пример реализации всплывающего окна по типу TComboBox, но без стандартной стрелки вниз.
Цитата:
Создайте еще одну форму без рамки, и по клику показывайте ее в нужном месте
Сейчас так и решаю проблему, но хотелось бы в виде компонента, т.е. нужно пример реализации всплывающего окна по типу TComboBox, но без стандартной стрелки вниз.
EugeneBoss3
Вот вроде чтото похожее: http://delphikingdom.com/asp/viewitem.asp?catalogid=1213
Вот вроде чтото похожее: http://delphikingdom.com/asp/viewitem.asp?catalogid=1213
В дэльфи 7 хотел изменить курсор по нажатию кнопки мыши. В обработчике события нажития кнопки командой statusBar1.Cursor:=crHSplit но курсор изменяет свой вид только после отпускания кнопки. Как раз в обработчике отпускания кнопки я востанавливаю вид курсора statusBar1.Cursor := crdefault
Как поступить Если мне надо чтобы вид курсора изменился пока удерживаеться нажатой кнопка мыши
Как поступить Если мне надо чтобы вид курсора изменился пока удерживаеться нажатой кнопка мыши
alex1334
WinAPI-шный SetCursor всегда в вашем распоряжении. А в D2010 у меня еще такой код работает: "Panel1.Perform(WM_SetCursor, Panel1.Handle, HTCLIENT);" (после установки нужного курсора).
WinAPI-шный SetCursor всегда в вашем распоряжении. А в D2010 у меня еще такой код работает: "Panel1.Perform(WM_SetCursor, Panel1.Handle, HTCLIENT);" (после установки нужного курсора).
Frodo_Torbins
RyComboControls от Алексея Румянцева я уже пробовал, но очень много багов. Может еще что-нить похожее подскажете?
RyComboControls от Алексея Румянцева я уже пробовал, но очень много багов. Может еще что-нить похожее подскажете?
EugeneBoss3
Там есть еще несколько вариантов от других авторов. А безбажные версии наверно лучше искать в больших пакетах типа ТМС.
Там есть еще несколько вариантов от других авторов. А безбажные версии наверно лучше искать в больших пакетах типа ТМС.
alex1334
Да, есть такое, лечится легко.
Код:
procedure TForm1.Panel1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X,
Y: Integer);
begin
Cursor := crHSplit;
Perform(WM_SETCURSOR, Handle, HTCLIENT);
end;
Да, есть такое, лечится легко.
Код:
procedure TForm1.Panel1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X,
Y: Integer);
begin
Cursor := crHSplit;
Perform(WM_SETCURSOR, Handle, HTCLIENT);
end;
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;
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;
Столкнулся с такой проблемой - в случае, если в программе было создано подключение к базе (используя odac), а же потом создана главная форма приложения, то создание письма через MAPI (через весьма распространенную функцию function SendEMail(Handle: THandle; Mail: TStrings): Cardinal; или же сторонние компоненты) возвращает код 2 (MAPI_E_FAILURE),
Как собственно попытаться обойти это, не меняя порядок создания форм.
Как собственно попытаться обойти это, не меняя порядок создания форм.
Wahnsinn
Чуть выше на этой странице я предлагал альтернативный вариант, возможно он вам подойдет?
Чуть выше на этой странице я предлагал альтернативный вариант, возможно он вам подойдет?
Frodo_Torbins
к сожалению нет, требуется вложение документов.
к сожалению нет, требуется вложение документов.
Wahnsinn
А отладчиком не пробовали смотреть, что при этом происходит? Как вариант, сделайте библиотеку только для отправки почты и вызывайте функцию отправки из нее (должно решить проблему). Либо только путем отладки смотреть где что передается и допиливание до рабочего состояния.
ЗЫ у меня вообще из консоли отправка идет и нормально все Кстати если используется оутлук, то можно отправлять через ОЛЕ аутлука - более кошерно получается.
А отладчиком не пробовали смотреть, что при этом происходит? Как вариант, сделайте библиотеку только для отправки почты и вызывайте функцию отправки из нее (должно решить проблему). Либо только путем отладки смотреть где что передается и допиливание до рабочего состояния.
ЗЫ у меня вообще из консоли отправка идет и нормально все Кстати если используется оутлук, то можно отправлять через ОЛЕ аутлука - более кошерно получается.
Wahnsinn
У меня тоже проблема с MAPI возникла, на части компьютеров работало, на части нет. Проблему решил возможностью в настройках добавления дополнительного отсылания писем через Ole Lotus Notes. (используемый почтовик)
Кстати у меня тоже к базе данных Oracle подключение, только через DOA и с очередностью форм проблем никогда не возникало.
У меня тоже проблема с MAPI возникла, на части компьютеров работало, на части нет. Проблему решил возможностью в настройках добавления дополнительного отсылания писем через Ole Lotus Notes. (используемый почтовик)
Кстати у меня тоже к базе данных Oracle подключение, только через DOA и с очередностью форм проблем никогда не возникало.
ShIvADeSt
Через библиотеку я попробовал сразу же, результат тот же. Из любой программы вызов идет нормально, из подключенной к базе - нет.
Пока я вывел во внешний com-сервер, но хотелось бы избавиться от него.
Через библиотеку я попробовал сразу же, результат тот же. Из любой программы вызов идет нормально, из подключенной к базе - нет.
Пока я вывел во внешний com-сервер, но хотелось бы избавиться от него.
Wahnsinn
Если ты создаш форму с кнопкой1 (оптравить письмо) и кнопкой2 (подключится/отключится от базы (через ODAC)). Будет ли работать отправка при включенном и выключенном соединении?
Если ты создаш форму с кнопкой1 (оптравить письмо) и кнопкой2 (подключится/отключится от базы (через ODAC)). Будет ли работать отправка при включенном и выключенном соединении?
mcdie
В случае если подключение к базе идет после запуска формы, все работает при любом раскладе. Но если же подключение происходит раньше - ничего уже не помогает.
Добавлено:
Вот простейший пример с 2 вариантами (+ исходник компонента TMapiControl, либо просто проигнорировать все ошибки связанные с ним)
http://files.mail.ru/ZB7028
В случае, если в ini файле параметр VID = 1, подключения к базе не происходит и все будет/должно работать. Параметр 0, соотвественно запустит подключение к базе по строке подключения CONNECT и к примеру у меня уже все перестает работать. Последовательность создания модулей в проекте важна, я особо повлиять не могу.
В случае если подключение к базе идет после запуска формы, все работает при любом раскладе. Но если же подключение происходит раньше - ничего уже не помогает.
Добавлено:
Вот простейший пример с 2 вариантами (+ исходник компонента TMapiControl, либо просто проигнорировать все ошибки связанные с ним)
http://files.mail.ru/ZB7028
В случае, если в ini файле параметр VID = 1, подключения к базе не происходит и все будет/должно работать. Параметр 0, соотвественно запустит подключение к базе по строке подключения CONNECT и к примеру у меня уже все перестает работать. Последовательность создания модулей в проекте важна, я особо повлиять не могу.
Wahnsinn
Повторю вопрос, почему бы не попробовать OLE Outlookа? Достаточно все просто делается и результат неплохой. Единственный минус - надо ставить оутлук 2007, чтобы избежать идиотского предупреждения, что сторонняя программа пытается поюзать оутглюк.
Повторю вопрос, почему бы не попробовать OLE Outlookа? Достаточно все просто делается и результат неплохой. Единственный минус - надо ставить оутлук 2007, чтобы избежать идиотского предупреждения, что сторонняя программа пытается поюзать оутглюк.
ShIvADeSt
Почтовики разные. Писать частные случаи случаи неочень, хотя конечно можно проверять почтовик и либо прежняя функция или же частный случай - 2003 оутлук.
Тк протестил - такая проблема только для 2003 оутлука, для всего остального работает. Причем ошибка идет, когда требуется показать письмо пользователю.
Почтовики разные. Писать частные случаи случаи неочень, хотя конечно можно проверять почтовик и либо прежняя функция или же частный случай - 2003 оутлук.
Тк протестил - такая проблема только для 2003 оутлука, для всего остального работает. Причем ошибка идет, когда требуется показать письмо пользователю.
Wahnsinn
Запустил твой пример. Работает при подключении через 1 и через 0 (подключение к Оracle). Клиент по умолчанию пробовал Lotus Notes и OutLook 2007. Поэтому непонятно что там у тебя, может в реестре не так прописано что нибудь.
Запустил твой пример. Работает при подключении через 1 и через 0 (подключение к Оracle). Клиент по умолчанию пробовал Lotus Notes и OutLook 2007. Поэтому непонятно что там у тебя, может в реестре не так прописано что нибудь.
mcdie
так в предыдущем сообщении я написал,что проблема под 2003 оутлуком только.
а в реестре кажется все стандартно
DLLPath mapi32.dll
DLLPathEx C:\Program Files\Common Files\SYSTEM\MSMAPI\1049\msmapi32.dll
так в предыдущем сообщении я написал,что проблема под 2003 оутлуком только.
а в реестре кажется все стандартно
DLLPath mapi32.dll
DLLPathEx C:\Program Files\Common Files\SYSTEM\MSMAPI\1049\msmapi32.dll
Доброго времени суток. Подскажите как правильно сделать запись:
через 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 и разное количество ковычек ставил.
Если строку записать не через переменную то все ок. Спасибо.
через 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, истории становления российского интернета. Сделано для людей.