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

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

Автор: yuish
Дата сообщения: 29.03.2007 14:51
killerbeanjeka

Цитата:
любой компонент с пожжержкой скинов, или делается форма без краёв (Bordertyle := bsNone), и самостоятельно делаются желтые кнопочки и Memo


то что Bordertyle := bsNone - я и так догадываюсь. но тогда форма не перетаскивается. как тогда таскать форму по экрану (как перетаскивать окна за рабочую область, увеличивать и уменьшать размер формы, не имея бордюра)


Цитата:
в OutLook'e отображается обычный ListView с ViewStyle := vsIcon


Спасибо. буду пытать
Автор: killerbeanjeka
Дата сообщения: 29.03.2007 15:11

Цитата:
как тогда таскать форму по экрану

сам не пробовал, но возможно эта ситуация решается по принципу описаному в следующей статье
[more]
http://www.chtotib.ru/options/library/data/33/87/116/169/img_move.html
[/more]
может и с изменением размера формы здесь можно что-то придумать
Автор: RomanTim
Дата сообщения: 29.03.2007 18:31
yuish
Таскание и сайзинг формы без бордюра можно сделать с помощью обработчика сообщения [more=WM_NCHITTEST]
TForm1 = class(TForm)
private
procedure Msg_HitTest(var Msg: TWMNCHitTest); message WM_NCHITTEST;
end;
...
procedure TForm1.Msg_HitTest(var Msg: TWMNCHitTest);
var
l, r, t, b: Boolean;
begin
l := Msg.XPos < Left + 5;
r := Msg.XPos > Left + Width - 5;
t := Msg.YPos < Top + 5;
b := Msg.YPos > Top + Height - 5;

if t and l then
Msg.Result := HTTOPLEFT
else if t and r then
Msg.Result := HTTOPRIGHT
else if t then
Msg.Result := HTTOP
else if b and l then
Msg.Result := HTBOTTOMLEFT
else if b and r then
Msg.Result := HTBOTTOMRIGHT
else if b then
Msg.Result := HTBOTTOM
else if l then
Msg.Result := HTLEFT
else if r then
Msg.Result := HTRIGHT
else
Msg.Result := HTCAPTION;
end;
[/more]
Автор: SERGE_BLIZNUK
Дата сообщения: 30.03.2007 05:18
whitewolfs
Цитата:
Это нужно не для архивации. Это для обработки базы на локальной машине, много раз за день и при этом база на локале всегда должна быть актуальной!

к сожаление, эта задача НЕ РЕШАЕТСЯ. Поверьте мне, FoxPro имеет свой кэш и реально увидеть можно изменения ТОЛЬКО когда база закрывается (а потом может быть опять открыта. Всё остальное - как повезёт - т.е. НЕ ГАРАНТИРОВАННО. Может и так, что пользователь изменил - изменения отобразились в файле, а может и нет...
А может отобразиться только ЧАСТЬ изменений... ;-((
И, кстати, только не смейтесь, это ещё зависит от железа - в частности от сетевого оборудования и той машины, где лежат DBF (файл-сервера).
Ну, если вы всё равно уверены, что вам нужны новые данные и уверены, что они всё же есть уже в файлах на сети - считайте простенький хэш (лучше только по тем полям, которые изменяются). Кстати, это легко сделать чисто на нативном коде без использования дополнительных библиотек и т.д.

RostY
Цитата:
.к. ДБФ не рассчитан на многопользовательский режим работы получиш кучу гемороя
имхо, Вы не правы. Конечно, к настоящей СУБД Foxpro никакого отношения не имеет. Но, есть реальная задача (порядка 130 тыс. записей), одновременная работа порядка 30 человек (именно РАБОТА, внесение квитанций, редактирование карточек + отчёты). связи с другими АРМ'ами (тоже на Foxpro) Всё работает. И даже на пеньках 200.
Хотя, конечно, согласен, это технологии позавчерашнего дня...
Автор: rs
Дата сообщения: 30.03.2007 07:13
подскажите, пожалуйста, что нужно для решения в общем-то простой задачи:

--
требуется: простейший обмен текстовыми сообщениями внутри LAN (без доступа в инет!) с возможностью отправки сообщения а)отдельному пользователю или б)группе пользователей в)всем пользователям; больше никакая функциональность не нужна; среда разработки Delphi7
--

просмотрел всё что мог в нете на тему IRC, накачал примеров с исходниками - всё либо очень старое (5-летней давности и не собирается (не хватает каких-то файлов), либо вполне свежее, строится нормально, но воспользоваться этим не получается, вероятно я что-то не понмаю - в общем запутался я окончательно

вот в частности, пример IRC-клиента (http://coderszone.info/?option=com_content&task=view&id=10&Itemid=27), использующий компоненту TIdIRC (из Indy) - нормально собрал приложение, при отправке сообщения без подключения к серверу ("от себя к себе, внутри приложения") сообщение этим же приложением принимается, т.е. кое-что вроде бы работает

далее, запустил это же приложение на другой машинке в своей локальной сети - приложения другу друга не видят; при попытке подключиться через меню требуется ввести адрес (ввожу ip другого компа) и порт (какой ввести - так и не понял) - естественно соединение не устанавливается

1)правильно ли я понимаю, что сервер, к которому я должен подключиться - это один из внешних (вне моей LAN) серверов в нете? и этим сервером не является это же моё приложение на другойм компе?

2)могу ли я каким либо образом разместить такое серверное приложение у себя в локальной сети? могу ли я его построить в дельфи, как? нужны ли для этого компоненты IdIRCServer (из Indy)? что это серверное приложение из себя должно представлять, как его настроить?

3)может быть есть готовые, в исходниках, примеры для Delphi7 делающие то что мне нужно?

4)есть ли где в сети примеры использования IRC-компонент из Indy? здесь http://www.indyproject.org/Sockets/Demos/index.aspx примеров IRC-приложений вроде бы нет...

--

зы
5)может быть мне вообще не IRC-методы нужны?
как тогда проще всего решить поставленную задачу?
если можно обойтись без серверного приложения - тоже неплохо

--
tnx


Автор: Arvur
Дата сообщения: 30.03.2007 07:57
rs

Цитата:
5)может быть мне вообще не IRC-методы нужны?
как тогда проще всего решить поставленную задачу?
если можно обойтись без серверного приложения - тоже неплохо

Имхо действительно из пушки по воробьям На 99,9% уверен, что нужно искать готовое решение.

Во-первых, в рунете точно бродили исходники чатов для локалки - и именно на делфи. Есть вероятность, что подобное лежит на torry в приложениях.
Во-вторых, краем уха слышал, что можно реализовывать общение в локалке через udp-протокол, при этом сервер вроде как не нужен.
А еще можно поставить icq corporate server - та же аська, но только внутри локалки. Для облегчения жизни пользователей - взять icq-клон Miranda.
Автор: vserd
Дата сообщения: 30.03.2007 09:31
Kr_Alex
Если есть исходник все нормально открывается?

Когда то встречал в FAQ вопрос о том как зарегистрировать форму так, чтобы появлялись published свойства в инспекторе объектов . Попробуй поискать, может поможет.
Автор: RostY
Дата сообщения: 30.03.2007 09:32
Еще можно через netsend посылать. если нужно, могу дати пример на дельфи.
Автор: Derrick Morgan
Дата сообщения: 30.03.2007 12:28
кто знает как скрывать PopupMenu если мышка не находится на нём
Автор: GreatOne
Дата сообщения: 30.03.2007 12:48
Народ!
Если я ставлю дельфи под администратором, а если использую под другой учеткой - то у меня не отображаются некоторые его компоненты. Как сделать чтобы они отображались? Из-за чего они не отображаються?
Автор: yuish
Дата сообщения: 30.03.2007 13:38
GreatOne
из под кого ставишь - те компоненты и кажет. т.е. у каждого юзера машины может быть свой набор компонентов
Автор: whitewolfs
Дата сообщения: 30.03.2007 14:34

Цитата:
SERGE_BLIZNUK

Ну чтож, примерно так я и думал. Спасибо за подробный ответ.
Автор: vserd
Дата сообщения: 30.03.2007 17:22
GreatOne
Эскпортируй под админом Hkcu относящийся к Delphi, а затем выполни импорт в нужной учетке.
Автор: Z MeZe
Дата сообщения: 02.04.2007 13:59

Цитата:
Unsupported 16bit resource in file "..\*.dfm"

Как заставить проект компилисься с минимальными потерями (времени)?
Стоит Delphi 5 (проект был вроде тоже под 5-ым сделан...)

ребилд и подобные вещи не помогают.
На Caption и Hint подобного плана: Caption = #1048#1089#1093#1086#1076... тоже идет ругань...

Теоретически понимаю в чем проблема, а как достаточно быстро заставить двигаться проект - не знаю.


В общем, хелп...
Автор: OdesitVadim
Дата сообщения: 02.04.2007 14:30
Эти dfm разрабатывались в 6 и старше. Гдето конверторы были. Но проще на старшую версию перейти
Автор: Z MeZe
Дата сообщения: 02.04.2007 14:34
OdesitVadim

Цитата:
Эти dfm разрабатывались в 6 и старше

Э-э-э, да,.. похоже последний билд был в 7-ом делфи сделан ...


Цитата:
Но проще на старшую версию перейти

В смысле, поставить 7-ую и перекомпилить? (нет возможности...)

Как "руками" заставить работать (в принципе, все widestring-и можно переименовать, все равно ругается)
Автор: OdesitVadim
Дата сообщения: 02.04.2007 14:40
Искать конвертор для dfm

Добавлено:
Во, нашёл
http://rybalko.nm.ru/html/soft/
Автор: Z MeZe
Дата сообщения: 02.04.2007 14:52
OdesitVadim
Респект. Как по маслу
Автор: SERGE_BLIZNUK
Дата сообщения: 02.04.2007 15:02
Z MeZe

Цитата:
Caption = #1048#1089#1093#1086#1076... тоже идет ругань...

проект точно сделан под Дельфи >= 6.0 (unicodе строчки в dfm)

мне помогала вот эта простенькая утилитка -
http://rapidshare.com/files/23957854/DfmUn2An.zip

DfmUn2An (Dfm Unicode To Ansi)
------------------------------
Программа переводит ресурс dfm-файла(ов) из Unicode в Ansi.
Это нужно для совместимости Delphi 5 с более поздними версиями
Delphi 6, 7... Они используют Unicode, а Delphi 5 Ansi.
Автор: Z MeZe
Дата сообщения: 02.04.2007 15:30
SERGE_BLIZNUK

Цитата:
мне помогала вот эта простенькая утилитка -
http://rapidshare.com/files/23957854/DfmUn2An.zip

Спасибо. Тоже тема...

Но конвертер
Цитата:
http://rybalko.nm.ru/html/soft/
поинтереснее ("съел" СРАЗУ без какой-либо ручной подготовки). Этому же пришлось "чуть-чуть объяснить" (перекомпилил с ошибками)

Но тем не менее OdesitVadim, SERGE_BLIZNUK СПАСИБО за оперативность (ОНА И БЫЛА НЕОБХОДИМА )

Автор: yuish
Дата сообщения: 03.04.2007 13:20
Контекстное меню из БД

у меня запрос возвращает таблицу код, наименование, паренткод (для treeview), могу ли я создать меню как в treeview? Что то я придумать не могу сам пока.

для создания меню без субменю попытался сделать так:


Цитата:

...
dm.lquery.open;
dm.lquery.first;
while not dm.lquery.eof do
begin
NewItem := TMenuItem.Create(TrayMenu);
TrayMenu.Items.Add(NewItem);
NewItem.Caption := dm.lquery.fieldbyname('menuname').asstring;
NewItem.Tag := dm.lquery.fieldbyname('menuid').asinteger;
NewItem.OnClick := TrayMenuItemsClick;
dm.lquery.next;
end;
...

при онклик делаю так:

procedure Tmenufrm.TrayMenuItemsClick(Sender: TObject);
begin
with Sender as TMenuItem do
begin
ShowMessage(inttostr(tag));
end;
end;


но так как в таком случае все делается без субменю, возникает путаница.

Автор: RomanTim
Дата сообщения: 03.04.2007 14:15
yuish
Ну и создавай так же, как и в TTreeView, только вместо NewNode = Tree.AddChild(Parent, Name) будет Parent.Add(NewItem)
Автор: killerbeanjeka
Дата сообщения: 03.04.2007 15:07
yuish
Можно отталкиватся от следующего [more=примера]
http://e-dok.narod.ru/delphi/question1/comp/comp-362.html
[/more] так как принцип построения дерева и меню очень похож
Автор: Dunkel1
Дата сообщения: 03.04.2007 20:34
Вопрос: имеется ли в Object Pascal аналог STL С++ ?
Автор: OdesitVadim
Дата сообщения: 03.04.2007 22:29
есть. Что бы не говорили сишники
http://gurin.tomsknet.ru/delphidecal.html
Автор: George_Lucky
Дата сообщения: 04.04.2007 13:27
Не подскажете, что из себя представляет журнал "Программирование на Delphi" что ли?
Индекс подписной - 82661.
Стоящая штука или так себе - бабло вытягивают...
Автор: Dunkel1
Дата сообщения: 05.04.2007 00:30

Цитата:
есть. Что бы не говорили сишники
http://gurin.tomsknet.ru/delphidecal.html


О, прикольно !
А то привык к STL, а в Дельфе то пусто )
Автор: Derrick Morgan
Дата сообщения: 05.04.2007 15:30
создаю клас от TMenuItem с новым публичным свойством:


Код: TExtendedMenuItem = class(TMenuItem)
public
Ext_FileName: String;
end;
Автор: OXDBA
Дата сообщения: 05.04.2007 16:20
procedure mi(Sender: TObject);

Автор: RomanTim
Дата сообщения: 05.04.2007 18:05
Derrick Morgan
Процедура mi() должна быть методом класса, а не просто процедурой в модуле:
TNotifyEvent = procedure (Sender: TObject) of object;

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667

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


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