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

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

Автор: stalker780
Дата сообщения: 01.06.2007 14:41
Никто еще не сталкивался с отображением приложения в таскбаре в Delphi 2007?
Там появилось свойство Application.MainFormOnTaskbar
Но приложение появляется в таскбаре только после прорисовки главного окна.
Например пока у тебя запущено окно логин или сплэш и выскочила ошибка, приложение приостанавливается и его в таске нет только в Альт+Таб. Как бы вернуть старое поведение как в Delphi 7-2006?
Задолбали запускать по 10 копий долгогрузящихся приложений
Автор: onyxhall
Дата сообщения: 01.06.2007 20:40
Имеется такой код


Код: ...
TTovar:TADOTable
...

TTovar.Close;
TTovar.Tablename:='ТоварСтроительныематериалы';
TTovar.Open;
TTovar.Filter:='КодДоговора='+IntToStr(KodDogovora);
TTovar.Filtered:=true;
TTovar.DeleteRecords(arFiltered);
Автор: RomanTim
Дата сообщения: 01.06.2007 21:15
stalker780
Добавь после Application.Initialize:
Код:
SetWindowLong(Application.Handle, GWL_EXSTYLE,
GetWindowLong(Application.Handle, GWL_EXSTYLE) or WS_EX_APPWINDOW);
ShowWindow(Application.Handle, SW_SHOWNORMAL);
Автор: OOD
Дата сообщения: 04.06.2007 10:50
Как отключить Alt+Tab в Win Xp?
Автор: RostY
Дата сообщения: 04.06.2007 14:34
Mandor Sawall
не подходит. Что-то у меня в нем Transparent не работает.
Есть еще варианты ?
Автор: SharedNoob
Дата сообщения: 04.06.2007 16:20
Доброго времени суток форумчане.
Опишу в чем собственно задача.
Есть потребность написать программу которая будет закрывать доступ к указанному порту кроме известных приложению IP адресов.
Программа будет иметь клиент-серверную систему, которую я впрочем уже реализовал. То есть, существует база данных (SQL 2000) в которой лежат данные о IP разрешенных пользователей. "Серверная" часть выполняет всего пару задач:
1) регистрирует IP которым должен быть доступ к порту.
2) закрывает порт для тех кого она не знает, и считает кому сколько времени осталось для работы с данным портом. Если время вышло то IP удаляется из списка известных и тоже начинает блокироватся.

Клиентская часть подключается к SQL серверу и меняет свой статус как онлайн. Запускает счетчик времени на сервере. отображает сколько времени осталось пользоватся данным портом (точнее сетевому приложению работающему через данный порт).

Так вот все это я написал, серверную часть, регистрацию, клиентскую часть, счетчики и т п . Но вот не знаю КАК СДЕЛАТЬ БЛОКИРОВКУ ПОРТА ДЛЯ ВСЕХ КРОМЕ УКАЗАННЫХ IP. Помогите пожалуйста. Если Есть какие нибуть FAQ, или сылки на описание как это можно реализовать в Delphi 7, напишите пожалуйста.

Автор: OdesitVadim
Дата сообщения: 04.06.2007 20:08
SharedNoob
Если эти порты открывает ваша программа - тогда можно. Но если закрывать порты вообще, тогда для Делфи это очень неподёмная задача. Ну если только не управлять каким-нибуть фаерволом
Автор: Tantos
Дата сообщения: 05.06.2007 05:43
OdesitVadim, вполне подъемная. Outpost у него сразу не получится, естесственно, но... Презерватив для Windows
Автор: SharedNoob
Дата сообщения: 05.06.2007 07:33
Как не крути должен быть мапинг порта. То есть к примеру, порт, который слушает мое сетевое приложение 45901. Далее я хочу открыть какой нить свой порт, ну к примеру 5555, пустить клиентов сетевого приложения через этот порт, причем те кому можно достучатся до этого порта будут перенаправлены на 45901. Нашел кое какие компоненты для мапинга портов в indy project. Как сделать перехват ума не приложу.

Добавлено:
2Tantos
ссылочка немного не правильная была, не сразу дошло исправить

http://forum.ru-board.com/www.xakep.ru/magazine/xA/068/098/1.asp

Добавлено:
2Tantos
Большое спасибо нашел там практически все что нужно !
Автор: Mandor Sawall
Дата сообщения: 05.06.2007 08:37
RostY
Ну, есть еще GraphicEx на http://www.soft-gems.net/
Но вы уверени, что ваш GIF правилен? Я не помню, что бы были какие-то проблемы с Transparent на TGIFImage...
Автор: stalker780
Дата сообщения: 05.06.2007 10:10
RomanTim

Цитата:
Добавь после Application.Initialize:

Спасибо, помогло. Тоже нашел код скрытия приложения из таскбара и пошел от обратного
Но форма логина в этом случае становится неактивной, на нее надо тыцнуть мышкой, а только потом вводить логин
Не подскажешь как ее активировать?
Автор: RostY
Дата сообщения: 05.06.2007 12:04
Mandor Sawall
в правильности гифа не совсем уверен, то уверен, что при использовании RX-компонент он рисуется прозрачным, а при использовании клонинга Anders Melander's TGIFImage прозрачным не делается, независимо от проперти Transparent. Попробую GraphicEx.
Автор: Mandor Sawall
Дата сообщения: 05.06.2007 12:15
RostY
Откройте GIF в каком-нибудь редакторе и посмотрите - установлен ли transparent color для него. Может быт, в RX ошибка и прозрачность определяется не из GIF-файла, а как BMP - из нижнем левом пикселе. Насколько я помню, в TGIFImage с прозрачности все в порядке.
Автор: RostY
Дата сообщения: 05.06.2007 14:04
Mandor Sawall
кажется, ты прав. Попробовал другой гиф -- вроде нормально. Спасибо всем за помощь.
Автор: RomanTim
Дата сообщения: 05.06.2007 14:50
stalker780
SetForegrowndWindow на окно логина?
Автор: alroy
Дата сообщения: 05.06.2007 15:41
При работе с Open Tools Api необходимо вывести сообщение в окно сообщений (Messages View) Delphi со строкой ошибки в тексте исходника, и при нажатии на эту строку код исходника должен перевестись на эту строку. Сделано все, кроме нажатия на это окно сообщений, так это событие перехватить никак не могу и вобщем то не знаю как сделать.
Автор: Erazer
Дата сообщения: 05.06.2007 15:48
подскажите удобный локализатор плз....

Добавлено:
есть вопрос... при запуске проги показываю форму, если чет не устраивает то говорю application. terminate, прога закрывается, НО на фоне первой формы буквально на пол-секунды показывается основная форма программы, и только потом прога закрывается полностью - некрасиво получается... как побороть это мелькание основной формы в тылу передовой ?
Автор: RomanTim
Дата сообщения: 05.06.2007 23:03
Erazer
Форма похоже показывается до Application.Run? Если так, то в файле проекта сделай вызов Application.Run условным по "if not Application.Terminated"
Автор: jONES1979
Дата сообщения: 05.06.2007 23:32
Erazer зависит от того, в каких именно обработчиках ты запускаешь свою проверку на "устраиваемость". порядок создания форм так же оч. важен, ну и ещё разные бывают нюансы

но если ты вставишь проверку в тело проекта (файл dpr)...

Код:
begin
// ... примерно ТУТ ...
// Halt;
Application.Initialize;
Application.CreateForm(Tbt_MainForm, bt_MainForm);
Application.CreateForm(Tbte_DM, bte_DM);
end.
Автор: yuish
Дата сообщения: 06.06.2007 10:30
Erazer

Цитата:
подскажите удобный локализатор плз....

обсуждалось не раз...
а так, я пользуюсь бесплатным - Делок
ххтп://deloc.narod.ru/index.html
Автор: GreatOne
Дата сообщения: 06.06.2007 12:01
Подкскажите плиз есть-ли в дельфи встроенная функция перевода чисел из десятичной системы в шестнадцатиричную?
Автор: andead
Дата сообщения: 06.06.2007 12:37
GreatOne
SysUtils.IntToHex
Автор: Mandor Sawall
Дата сообщения: 06.06.2007 13:08
GreatOne
...или чрез %x в Format(). Но через IntToHex быстрее.
Автор: GreatOne
Дата сообщения: 07.06.2007 12:48
Всем спасибо.
Еще такой вопрос - В событии кнопки, в цикле, делаю WebBrowser.Navigate и когда закончит выполняться событие OnDocumentComplete(WebBrowser) нужно продолжить выполнять цикл в событии кнопки. Как нужно организовать структуру программы, чтобы цикл не продолжал выполняться пока не будет завершенно событие OnDocumentComplete веб-браузера???
Автор: RomanTim
Дата сообщения: 07.06.2007 22:04
GreatOne
Можно не делать цикл явно. Необходимые для работы "цикла" переменные (например тот же счетчик - если нужен) описываешь как поля формы. Делаешь процедуру с параметром FirstCall, вызываешь ее из OnClick c True, из OnComplete - с False. В процедуре, если первый вызов - взводишь переменные в начальное состояние, а потом вызываешь Navigate и прочую логику.
Автор: redterror
Дата сообщения: 08.06.2007 12:39
Почему такой код:

image1.Picture.Bitmap.Canvas.Pixels[10,10]:=255;

не работает (Borland Developer Studio 2006)

и вообще как получить цвет пикселя из TImage?

заранее благодарен...
Автор: GreatOne
Дата сообщения: 08.06.2007 13:08
RomanTim
Спасибо.
Автор: SharedNoob
Дата сообщения: 08.06.2007 16:11
Добрый день. Подскажыте пожалуйста.
У меня в приложении используется компонент IdMappedPortTCP, из Indy, я принимаю на какойто свой порт, к примеру 5501, пакеты, читаю IP, проверяю пожно ли пропустить пакеты с этого IP и перенаправляю на другой свой локальный порт, к примеру 5502. Так вот это все работает, а можно ли еще узнать название приложения которое подключается к порту 5501 ?

код считывания IP.

Код:
procedure TForm1.IdMappedPortTCP1Connect(AThread: TIdMappedPortThread);
begin
AThread.Connection.Socket.Binding.RecvFrom()
ADOStoredProc1.Active:=false;
ADOStoredProc1.Parameters.ParamByName('@IP').Value:=AThread.Connection.Socket.Binding.PeerIP; //JvEdit1.Text;
ADOStoredProc1.ExecProc;
If ADOStoredProc1.Parameters.ParamByName('@Access').Value='1' then AThread.Connection.Disconnect ;

end;
Автор: OdesitVadim
Дата сообщения: 09.06.2007 00:12
redterror

Цитата:
Почему такой код:

image1.Picture.Bitmap.Canvas.Pixels[10,10]:=255;

не работает (Borland Developer Studio 2006)

Где вы так нашли? Ужас.

Цитата:
и вообще как получить цвет пикселя из TImage?

Вот так не прбывали
image1.Canvas.Pixels[10,10]:=255;
Автор: GreatOne
Дата сообщения: 09.06.2007 14:37
Народ!! Подскажите плиз почему у меня в StringGrid влазит только 128 строк, и можно-ли как-нить увеличить его вместимость???

Добавлено:
Алгоритм занесения такой:

var i:integer;
begin
for i:=0 to StringList1.Count-1 do
begin
with Form3.StringGrid1 do
begin
Cells[0,Form3.StringGrid1.RowCount-1]:=IntToStr(i+1);
Cells[1,Form3.StringGrid1.RowCount-1]:=StringList1.Strings[i];
Cells[2,Form3.StringGrid1.RowCount-1]:=StringList2.Strings[i];
Cells[3,Form3.StringGrid1.RowCount-1]:=StringList3.Strings[i];
Cells[4,Form3.StringGrid1.RowCount-1]:=StringList4.Strings[i];
Cells[5,Form3.StringGrid1.RowCount-1]:=Word;
end;
Form3.StringGrid1.RowCount:=Form3.StringGrid1.RowCount+1;
end;
end;

В StringList1 содержиться 350 записей, а в StringGrid1 отображается только 128. Кто может помочь?

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667

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


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