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

» Вопросы по Delphi 2

Автор: gogaman
Дата сообщения: 15.03.2007 11:43
dmit000

вот здесь еще посмотри http://www.articles.org.ru/cfaq/index.php?qid=933&frommostrecent=yes

пробовал вобщем запуск получился вот подскажи как убить файл после закрытия формы

ссылки прилепил код без сохранения я так понял загружает в память а потом с нее читает но вот проблема при первом запуске сразу же запускается файл а не по нажатию кнопки
Автор: svs123456789
Дата сообщения: 15.03.2007 12:32
Solnake

Цитата:
на событие ДС2 BeforeOpen присваиваете параметру :ID тот айди на котром стоите в заказах.

мне параметр :ID выдавала delphi
используя свойство мастерсоурсе у датасета T2
автоматом получал id текущей записи в T1
который и подставлялся в условие and t12.ID_Table1 = :ID

а как мне вручную (каким select) узнать ID у текущей записи в таблице T1 ?


Цитата:
Грид и ДС звязываете полюбому через ДатаСорс, в нем есть такое событие как OnDataChange. так вот, на это событие делаете рефреш ДС2 в виде Close, Open.

я правильно понял, что в моем варианте стали бы фетчится ВСЕ записи из таблицы T2 ?
а в твоем только те которые соответсвуют условию текущей записи в T1 ?


соединение через адоконнекшн с ms sql
Автор: Solnake
Дата сообщения: 15.03.2007 12:52
svs123456789
Хм... ну если вы такие вопросы задаете, даже не знаю уже с чего начинать вам росказывать. Выслал-бы вам один из своих проектов небольших, его бы вам хватило для обучения, но там юзаются компоненты нестандартные, многое не увидите.
Давайте мыло, вышлю програму+базу.
Надеюсь как поднять бекап розберетесь?
Автор: svs123456789
Дата сообщения: 15.03.2007 13:25
Solnake
мыло написал в личку..

до сих пор я пользовался id_master := tblT1.FieldByName('ID').AsInteger;

а как мне вручную (каким select) узнать ID у текущей записи в таблице T1 ?
Автор: RostY
Дата сообщения: 15.03.2007 13:40
AlphaControls v4.79 + Delphi-5.
Наблюдается глюк при использовании sDateEdit. Кто-то стыкался с этой проблемой ? Это глюк разработчиков, или имено той версии что у меня ?
Автор: mauar
Дата сообщения: 15.03.2007 15:43
Люди, дайте совет плиз :
Программа написанна на дельфи 7, при изменении режима экрана у программы сьезжают окна, кнопки и другие компоненты размещенные на форме, как оптимизировать окна программы под разные разрешения экрана, сворачивания программы или при изменении размера окна?
Заранее большое спасибо
Автор: dmit000
Дата сообщения: 15.03.2007 16:18
gogaman

В примере который ты привёл путь для распаковки не указан. куда они сливаются на винте в процессе обращения?
Автор: OXDBA
Дата сообщения: 15.03.2007 16:37
RostY
Так спроси у Гончарова сам
http://www.alphaskins.com/forum/index.php?s=82a3ac600ffdef1b1f73821f5a740766&showforum=5
Автор: Solnake
Дата сообщения: 15.03.2007 17:07
mauar
Ну не видел такого чтобы компоненты прям сьежали. Может форма не помещатся, или еще чтото, но чтобы так...
Юзай в таких случаях MDI Application.
Автор: mauar
Дата сообщения: 15.03.2007 18:49

Цитата:
mauar
Ну не видел такого чтобы компоненты прям сьежали. Может форма не помещатся, или еще чтото, но чтобы так...
Юзай в таких случаях MDI Application.

Ну да форма не помещается, и компоненты не видны по бокам, что за MDI Application ? И где его взять, я новичок, только учусь писать программы.
Спасибо
Автор: Solnake
Дата сообщения: 15.03.2007 19:36
mauar
Хм...
Почитайте
Автор: RostY
Дата сообщения: 16.03.2007 09:42
mauar
не думаю, что MDI тебе сильно поможет. Лучше попробуй кнопки поскладывать на ToolBar'ы, установить Align у контролов... А еще лучше, если небольшой проект, дай глянуть -- может что-то посоветую.
Автор: HOUPE
Дата сообщения: 16.03.2007 10:01
А действительно реально считать из Делфи разрешение экрана, и в соответствии с этим разрешением управлять размерами элементов проги, кнопками там, окнами всякими?
Автор: RostY
Дата сообщения: 16.03.2007 10:29
Есть еще всякие компоненты, типа ElasticForm, Resizer и пр...
Когда-то давно что-то такое пробовал -- батоны, едиты, лабелы, нормально ресайзались, с гридами было чуть потруднее. Думаю, сейчас уже должны быть достаточно мощные компоненты для решения этой проблеммы.
Автор: killerbeanjeka
Дата сообщения: 16.03.2007 10:53
HOUPE
Считать размеры экрана можно так
Screen.Width
Screen.Height
Автор: gogaman
Дата сообщения: 16.03.2007 12:40
dmit000

Страничку привел как описание как создать файл ресурса.
А насчет того куда сохраняет я так думаю в память а не на винт.
Попытался прикрутить к своей задачи результат есть но запуск файла происходит сразу же после запуска формы а не по нажатию кнопки. Что не так не знаю может что то надо добавить или убрать.
Автор: dmit000
Дата сообщения: 16.03.2007 13:23
gogaman
Скинь мне пожалуйсто на Dmit30@ngs.ru твои исходник с res файлом
Автор: Solnake
Дата сообщения: 16.03.2007 16:04
Для того чтобы интерфейс был под разные розрешения нормально читабельным нада
1. Умно его сдизайнить
2. Правильно якоря розкидать
3. Есть девелоперовские компоненты, райзеровские панели.....

Автор: HOUPE
Дата сообщения: 19.03.2007 04:10
killerbeanjeka
Эээ. Действительно.
Автор: greenpc
Дата сообщения: 19.03.2007 12:03
HOUPE
Пробуй. Источник _www.interface.ru
[more]

Масштабирование формы при изменении размера системного шрифта. При переносе приложения с одного компьютера на другой часто происходят нежелательные искажения форм: часть заголовков контролей перестают быть видимыми или контроли начинают перекрываться друг с другом и.т.д. Это происходит при изменении размера системного шрифта и приложение пытается изменить размеры и позиции контролей с тем, чтобы в том же масштабе разместить на них заголовки. В доступных мне приложениях, помимо того что в некоторых приложениях происходят безобразные искажения, я наблюдал три способа решения этой проблемы:

1. Приложение устанавливает новый системный шрифт. От таких я немедленно избавляюсь, так как непонятно что будет когда аналогичное, но другое приложение, захочет изменить системный шрифт для себя…

2. Приложение не изменяет позиций и размеров контролей при изменении величины системного шрифта, но размеры контролей достаточно большие, чтобы разместить на них надписи при больших размерах системного шрифта. Формы в таких приложениях часто производят плохое впечатление при малых размерах системного шрифта. Кроме того, если пользователь установит системный шрифт больше, чем стандартный «Large Font» Windows большого графического разрешения, то надписи часто не помещаются на контролях…

3. Наконец в ряде приложений величина и размеры контролей меняются пропорционально размеру системного шрифта. Это, на мой взгляд, наиболее корректный способ масштабирования и ниже пойдет об этом способе масштабирования.

Форма имеет два свойства, которые регулируют масштабирование: Scaled и PixelsPerInch. Если установить свойство Scaled в False, то форма не будет масштабироваться при изменении системного шрифта. Если при этом заранее сделать контроли большими, то получится тот самый результат, что и в п. 2 выше. Поэтому значение свойства Scaled должно быть True.
Свойство PixelsPerInch непонятно зачем выведено в Инспектор Объектов. Перед показом формы PixelsPerInch пересчитывается в соответствии с реальным размером системного шрифта и выставленное в Инспекторе Объектов значение затирается. Но именно пересчитанное значение важно анализировать для корректного масштабирования формы.
Если форма имеет толстые границы (ее размер в этом случае может изменяться пользователем во время выполнения приложения) или если форме разрешено иметь каретки для скроллирования, то размер клиентной области формы останется таким же, как и был на этапе разработки. При этом часть контролей уйдет за пределы клиентной области и пользователь вынужден будет пользоваться каретками для прокрутки формы или же менять границы при ее показе что приводит к лишним операциям.
Поэтому перед показом форм иногда необходимо писать код для пересчета ширины и высоты. Я это делаю в обработчике события OnShow. Использование OnShow гарантирует, что все ресурсы (в том числе и размеры контролей) уже загружены.

procedure TDialogForm.FormShow(Sender: TObject);
var
I,XMax,YMax:integer;
PT:TPoint;
begin
if not FFirstRun then Exit;
{Resizing of form}
if (Screen.PixelsPerInch<>96) and (ComponentCount>0) then begin
XMax:=0;
YMax:=0;
for I:=0 to ComponentCount-1 do if Components[I] is TControl then with Components[I] as TControl do begin
PT:=Self.ScreenToClient(ClientToScreen(Point(Width,Height)));
if PT.X>XMax then XMax:=PT.X;
if PT.Y>YMax then YMax:=PT.Y;
end;
XMax:=XMax+2*GetSystemMetrics(SM_CXDLGFRAME)+4;
YMax:=YMax+2*GetSystemMetrics(SM_CYDLGFRAME) +GetSystemMetrics(SM_CYCAPTION) +4;
Width:=XMax;
Height:=YMax;
end;
FFirstRun:=False;
end;

Этот код можно использовать в большинстве форм. Исключение – использование компонента TScrollBox – его детей не надо учитывать для определения размеров формы. Классовая переменная FFirstRun используется для однократного запуска данного кода.
Если контроли создаются динамически, то есть во время выполнения, а не на этапе разработки, то при установки границ контролей нельзя пользоваться абсолютными координатами – только относительными! Например, если контроль MyControl должен располагаться под кнопкой BitOK, иметь такую же ширину, а по высоте на 4 пиксела не доходить до края формы, то следует писать код: MyControl.SetBounds(BitOK.Left, BitOK.Top+BitOK.Height+4, BitOK.Width, ClientWidth-BitOK.Top-BitOK.Height-8); но не следует писать, например, так: MyControl.SetBounds(10,60,70,180);
Все сказанное выше о масштабировании работает только при совпадении шрифтов формы и установленных на ней контролях. Поэтому не рекомендуется определять отдельные шрифты для контролей. Если же это необходимо, то размеры таких контролей должны быть пересчитаны в явном виде перед показом формы. При этом для расчета масштабного коэффициента нельзя пользоваться свойством Height (или Size) шрифта! Необходимо вызвать Win API функцию GetTextMetrics и использовать поле tmHeight структуры TTextMetric.
Для создания полноценного интерфейса необходимо также корректно использовать меню и панели инструментов, создать систему помощи и подсказок, использовать информацию о версии.
[/more]
Автор: georgbird
Дата сообщения: 19.03.2007 19:02
Здравствуйте всем, подскажите пожайлуста, как с помощью Delphi запретить доступ к отдельным файлам/папкам. В литературе описывают только процедуры открыть/закрыть дописать/стереть создать/уничтожить и так далее. В WinAPI тоже такого не нашел, в вебе не встречалось. Спасибо всем
Автор: OdesitVadim
Дата сообщения: 19.03.2007 19:10
georgbird
Если имеем дело с НТ основой и НТФС, тогда достаточно просто - это просто игра правами. В виндовс есть целый набор функций, имена которых начинаются с ACL. Если же нет, то прийдётся писать что то типа драйверка. Для делфи это пока не по зубам.
Автор: Narrator
Дата сообщения: 20.03.2007 18:49
С недавних пор (1-2 месяца) BDS2006 стала вести себя странно... Компилирую проект, запускаю - а главной формы нет. Делаю programm reset, снова запуск - все нормально. Иногда несколько раз требуется повторить. Сталкивался ли кто? Что за саботаж?
Автор: georgbird
Дата сообщения: 20.03.2007 21:30
OdesitVadim
Пасибо.
Автор: vserd
Дата сообщения: 21.03.2007 10:14
Narrator
Поробуй принудительно прописать mainform.visible := true в проекте.
Автор: dmit000
Дата сообщения: 21.03.2007 13:54
Есть заполненную числами таблица Stringgrid (однозначно заполненная и не подлежащая изменению при работе программы).
Над нужными стобцами вставляю кнопки.
Хочу чтобы при нажатии на соответствующую кнопку происходила сортировка по возрастанию значений чисел в данном столбце (соответственно с движением строк по всей таблице)

Вопрос: Как это сделать?

и ещё:

Ещё хотелось бы чтобы происходило заполнение комбобокса числами нужного мне столбца таблицы стрингрид и соответственно возможность управления из комбобокса стрингридом.

Вопросы типа а чего не DB не задавать.

Научите пожалуйсто!
Автор: Narrator
Дата сообщения: 21.03.2007 14:21
vserd
Пробовал, не помогало.

Вчера достало оно меня - разобрался. Может кому пригодится. Описанное ранее поведение было только при запуске из-под среды. Если запускать само приложение, то все работало нормально. Я в FormCreatе делал загрузку libvlc.dll, инициализацию и настойку VLC. Затык в отладчике происходил на моменте вызова VLC_Init, который сам по себе вызывает загрузку еще целой кучи вспомагательных dll. Основной поток при этом переходит в режим ожидания. Решил путем переноса в OnShow с контролем однократного исполнения.

Добавлено:

Проблема осталась. VLC в отладчике после(в процессе) загрузки плагинов теряет парента. Но это уже не связано напрямую с BDS, потому не для обсуждения в этой ветке.
Автор: OdesitVadim
Дата сообщения: 21.03.2007 14:41
dmit000

Цитата:
Хочу чтобы при нажатии на соответствующую кнопку происходила сортировка по возрастанию значений чисел в данном столбце (соответственно с движением строк по всей таблице)

Сортировать умеем? Гуглим на тему пузырьковой сортировки (имхо самая простая и быстореализуемая)

Код:
l:=StringGrid1.rowcount;
for i:=0 to l-2 do
for j:=i+1 to l-1 do
if strtoint(Stringgrid1.cells[col,i])>strtoint(Stringgrid1.cells[col,j]) then
begin
for k:=0 to Stringgrid1.rowcount-1 do
begin
s:=stringGrid1.cells[k,i];
stringGrid1.cells[k,i]stringGrid1.cells[k,j];
stringGrid1.cells[k,j]:=s;
end;
end;
Автор: greenpc
Дата сообщения: 21.03.2007 14:52
dmit000
OdesitVadim
как вариант взять гриду из девок, она это все делает на лету, но тяжеловата
Автор: dmit000
Дата сообщения: 21.03.2007 15:04
OdesitVadim

Большущее Тебе спасибо!

//Ну понятно, по незнанию оного (DB)//
BD не использую чтобы не таскать его с EXE и не задуряться с рессурсами.

//однозначно заполненная и не подлежащая изменению при работе программы//
имеется в виду, что числа в таблице пользователь менять не сможет.

//соответственно возможность управления из комбобокса стрингридом//
имеется в виду следующее. Выбрать значение из комбобокса быстрее чем бегать по таблице стрингрид. Вот и хотелось бы иметь такую связку:
1. по нужному мне стобцу стрингрида заполнить комбобокс.
2. выбрал из комбобокса число и стрингрид добрался до строки с этим числом и строка стрингрида выделилась в синий цвет и все возрадовались.
3. аминь.
Вот это и имелось в виду. При этом выделение в цвет не обязательно.

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667

Предыдущая тема: Событие STFilter(DBGridEh) ???


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