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

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

Автор: Frodo_Torbins
Дата сообщения: 12.06.2012 12:53
SevereK20
Я так и не понял, вам нужно чтобы таблица обновилась у обоих пользователей, или только у того, кто их отредактировал? Если только второе, то это даже ADO умеют.
Автор: ant0ni02004
Дата сообщения: 12.06.2012 14:41
XPerformer
эх, если б только не нужно было постоянно проверять bookmarkValid - всё было б замечательно
а так это ничем не отличается от запоминания ID или ноды (и всё равно проверять есть запись после обновления или нет)
Автор: eddoc
Дата сообщения: 12.06.2012 17:49
salexn1

Цитата:
нужно придумывать как быть в таких случаях...

ничего придумывать не надо. Вот в этом случае

Код: var bm: TBookmark;
begin
if ADOQryTotal.Active then
begin
bm:= ADOQryTotal.GetBookmark;
ADOQryTotal.Close;
ADOQryTotal.Open;
if ADOQryTotal.BookmarkValid(bm) then ADOQryTotal.GotoBookmark(bm)
ADOQryTotal.FreeBookmark(bm);
end;
end;
Автор: ant0ni02004
Дата сообщения: 12.06.2012 20:18
eddoc
так будет чуть лучше, зачем лишний раз локейтится

Код:
if ShowModal = mrOk then begin
OldId := NextId;
ReOpen; // переоткрытие набора если запись была удалена (close/open)
end
else exit;
Автор: eddoc
Дата сообщения: 13.06.2012 02:43
ant0ni02004

Цитата:
так будет чуть лучше, зачем лишний раз локейтится

"мопед не мой"
у меня этот код чуток модифицирован, я привел оригинал
Автор: Aleksandr N
Дата сообщения: 25.06.2012 17:32
Вопрос снимается
Автор: miwa
Дата сообщения: 25.06.2012 18:41
Проверять множество shift:

if ssRight in Shift then showmessage('Нажата правая кнопка');
if ssMiddle in Shift then showmessage('Нажато колесико');
...
Автор: Aladdinych
Дата сообщения: 02.07.2012 12:10
Подскажите как на delphi 7 определить, какой компонент находится под курсором мыши.
Пробовал ControlAtPos, но он выдает родительский компонент. Картина такая:
Form1->Panel1->Panel5->ScrollBox1-> Component1. Мне нужно определить находится ли курсор над Component1. А функция ControlAtPos выдает Panel1. Как победить проблему?
Автор: Frodo_Torbins
Дата сообщения: 02.07.2012 12:53
Aladdinych
Эта функция перебирает только непосредственных чилдов того контрола, для которого вызвана. В старших версиях делфи для этого добавлен еще один параметр, а в семерке вы можете попробовать FindDragTarget.
Автор: Aladdinych
Дата сообщения: 02.07.2012 13:00
Работает. Большое спасибо.
Автор: SevereK20
Дата сообщения: 07.07.2012 10:51
Ребят, а подскажите...
программа на Delphi 7 + firebird
Мне очень блин понравились алерты) Для события after insert делаю событие POST_EVENT бла-бла-бла.
Отслеживаю это событие и когда оно наступит - выдаю пользователю сообщение об успешном добавлении и очищаю edit-ы. Все круто,но программой будут пользоваться 2-3 человека. И сообщения приходят всем как только кто-то что-то добавил... как это обойти? чтобы сообщение получал только тот кто действительно добавил.
Автор: krapotkin
Дата сообщения: 08.07.2012 13:34
SevereK20
Сделать флаг вроде EventPending
Сделал изменения - взвел флаг
Приходит Event - проверить, если флаг поднят, значит нужно "очищать Edit'ы" и сбрасывать флаг
Остальные тоже получат известие, но проигнорируют его.
Автор: SevereK20
Дата сообщения: 08.07.2012 13:42
krapotkin
Спасибо!
Автор: apnss
Дата сообщения: 09.07.2012 14:47
привет всем

может подкинет кто модуль для определения кодировки xlat.pas ?

заранее спасибо...

Автор: data man
Дата сообщения: 09.07.2012 14:55
apnss

Цитата:
модуль для определения кодировки xlat.pas

Не знаю такого. Может подойдёт Charset Detector?
Автор: SevereK20
Дата сообщения: 09.07.2012 15:20
apnss
это ж файл от плагина для тотала Codepage
Автор: apnss
Дата сообщения: 09.07.2012 16:19

Цитата:
Не знаю такого. Может подойдёт Charset Detector?


для старого проекта нужен .... ломак подстраивать

но за ссылку спасибо - было полезно


Цитата:
это ж файл от плагина для тотала Codepage

угу только что-та удачно не гуглица оно
Автор: data man
Дата сообщения: 09.07.2012 16:34
apnss

Цитата:
за ссылку спасибо

Не за что!


Цитата:
удачно не гуглица оно

Да ладно! Тут есть.
Автор: SevereK20
Дата сообщения: 10.07.2012 14:13
есть delphi 7 + fb 2.5 ..
в программе ведется полное логирование - кто когда зашел, когда вышел.
средствами delphi при закрытии приложения выполняется запрос, который пишет в лог о выходе. но при разрыве подключения по сети.. или shutdown компа запись естественно не пишется о выходе. можно ли придумать какой-нибудь варинат, при котором запиь о выходе пользователя из бд будет заносится всегда..?
Автор: ant0ni02004
Дата сообщения: 10.07.2012 15:28
SevereK20
попробуйте trigger on disconnect, начиная с ФБ 2.1 есть
Автор: SevereK20
Дата сообщения: 11.07.2012 08:57
ant0ni02004
спасибо.пойду в ветку по фб
Автор: miwa
Дата сообщения: 11.07.2012 10:28
SevereK20
Имейте в виду, что OnDisconnect срабатывает тогда, когда ОС отправляет извещение процессу ФБ о потере коннекта. В случае физических проблем с сетью (сгоревший свич) дефолтный таймаут винды - что-то около двух часов. «Просто запомните это, потому что понять это невозможно» ©
Автор: SevereK20
Дата сообщения: 11.07.2012 10:33
miwa
вроде как заверяли, что не сработает только в случае падения сервера)
счас отпишу в ветку по фб.
спасибо
Автор: F777
Дата сообщения: 12.07.2012 00:22
Код Delphi 7:

[more]procedure TMainForm.AuthorKeyPress(Sender: TObject; var Key: Char);
begin
case Key of
'А'..'Я','а'..'я','Ё','ё','І','і','Ї','ї','Є','є': Key:=#0;
'`': Key:='''';
else ;
end;
end;[/more]

Под Windows XP работает нормально: символы кирилицы не вводятся, обратный апостроф заменяется.

Запускают созданную программу под Линуксом через Wine 1.4.1. Указанная фильтрация ввода символов не работает. Почему? Как лечить?

Спасибо.
Автор: ESV1987
Дата сообщения: 14.07.2012 13:24
Здравствуйте ещё раз

а кто-нибудь встречал какое-нибудь руководство о том, как правильно сделать дизайн главной формы задачи (математической)?
Понятно, что это дело индивидуальное, но основные рекомендации для удобства пользования наверняка где-то описаны... (хочу ряд своих мини-задач объединить в одну прогу)
Автор: Maks150988
Дата сообщения: 16.07.2012 13:07
Всем привет. Подскажите почему выскакивает исключение при вызове SafeArrayDestroy. Вроде все правильно делаю...


Цитата:
procedure BrowserPostData(const si: SELFCARE_INFO);
const
pszHeader: UTF8String = 'Content-Type: application/x-www-form-urlencoded';
var
pszURL : UTF8String;
pszData : UTF8String;
hr : HRESULT;
pWBApp : IUnknown;
pBrowser2 : IWebBrowser2;
psa : PSafeArray;
LBound : Integer;
cElements : Integer;
pvdata : Pointer;
URL : OleVariant;
Flags : OleVariant;
TargetFrameName: OleVariant;
PostData : OleVariant;
Headers : OleVariant;
begin
pszURL := si.pszURL;
pszData := si.pszData;
hr := CoCreateInstance(CLSID_InternetExplorer, nil, CLSCTX_INPROC_SERVER or
CLSCTX_LOCAL_SERVER, IID_IWebBrowser2, pWBApp);
if (hr = S_OK) then
try
pBrowser2 := pWBApp as IWebBrowser2;
LBound := 0;
cElements := Length(pszData);
psa := SafeArrayCreateVector(VT_UI1, LBound, cElements);
if (psa <> nil) then
try
hr := SafeArrayAccessData(psa, pvdata);
if (hr = S_OK) then
try
CopyMemory(pvdata, LPCSTR(pszData), cElements);
TVarData(PostData).VType := varByte or varArray;
TVarData(PostData).VArray := Pointer(psa);
URL := pszURL;
Flags := navNoReadFromCache;
TargetFrameName := EmptyParam;
Headers := pszHeader;
pBrowser2.Navigate2(URL, Flags, TargetFrameName, PostData, Headers);
pBrowser2.Visible := TRUE;
finally
SafeArrayUnaccessData(psa);
end;
finally
SafeArrayDestroy(psa);
end;
finally
pWBApp := nil;
end;
end;
Автор: ant0ni02004
Дата сообщения: 16.07.2012 19:45
Maks150988

может его уже SafeArrayUnaccessData освобождает
Автор: XCV81
Дата сообщения: 17.07.2012 16:15
Может подскажет кто решение моей задачки, надо все файлы с расширением "txt" одной папки (включая подпапки) кроме определенных файлов (к примеру кроме 1.txt и 10.txt) скопировать в другую папку сохраняя структуру подпапок....
пока сделал так: сначала копирую все файлы, потом из папки с результатом удаляю ненужные, но такой выход мне совсем не нравится...
[more]
begin
dir1:=Edt1.Text;
dir2:=Edt2.Text;
CopyAll;
DeleteFile(Edt2.Text+'\1.txt');
DeleteFile(Edt2.Text+'\10.txt');
end;
procedure TForm1.CopyAll;
var
OpStruc: TSHFileOpStruct;
frombuf, tobuf: Array [0..128] of Char;
Begin
FillChar( frombuf, Sizeof(frombuf), 0 );
FillChar( tobuf, Sizeof(tobuf), 0 );
StrPCopy( frombuf, dir1+'\*.txt' );
StrPCopy( tobuf, dir2+'\' );
With OpStruc DO Begin
Wnd:= Handle;
wFunc:= FO_COPY;
pFrom:= @frombuf;
pTo:=@tobuf;
fFlags:= FOF_NOCONFIRMATION or FOF_RENAMEONCOLLISION;
fAnyOperationsAborted:= False;
hNameMappings:= Nil;
lpszProgressTitle:= Nil;
end;
ShFileOperation( OpStruc );
end;
[/more]
Автор: Maks150988
Дата сообщения: 18.07.2012 10:14
ant0ni02004
Как я понимаю, функция SafeArrayAccessData возвращает указатель на данные массива и блокирует массив. Соответственно функция SafeArrayUnaccessData снимает блокировку. Но сам дескриптор массива то остается, вот и удаляю его через SafeArrayDestroy, но происходит ошибка...
Автор: ant0ni02004
Дата сообщения: 18.07.2012 14:25
Maks150988
а исключение какое выскакивает? текст, системный код ошибки?

Страницы: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374

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


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