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

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

Автор: ustassss
Дата сообщения: 17.08.2010 10:20
Всем привет!
Я к сожалению далёк от программирования, но очень хочу научиться!
Огромная просьба, дайте совет: какие книжечки по изучать для начала самообучения?
Вводные данные: Windows XP SP 3, Delphi 7! Или нужно что то другое?
Автор: Frodo_Torbins
Дата сообщения: 17.08.2010 11:06
ustassss
Пост в тему: http://www.gunsmoker.ru/2010/08/delphi.html
Лицей Королевства Делфи: http://www.delphikingdom.com/lyceum/
А лично у меня до сих пор лежит "Программирование в Delphi 7" Дарахвелидзе и Маркова.
Автор: ustassss
Дата сообщения: 17.08.2010 11:44
Frodo_Torbins
Большое спасибо!!!
Автор: JohnSilver182
Дата сообщения: 17.08.2010 14:31
ustassss
Самая толковая книга в мире это Фаронов В.В. Delphi 5 учебный курс . Возможно есть и по Delphi 7 .

З.Ы. Я пока сам сижу на Delphi 7.

Добавлено:

Цитата:
Цитата:
SHGetSpecialFolderLocation(0, CSIDL_PERSONAL, ppidl);

У тебя и есть через CSIDL - в частности CSIDL_PERSONAL


А подскажите , зачем я такой код нагородил ??????????????????
Автор: salexn1
Дата сообщения: 17.08.2010 16:43
Самая самая толковая книга - это Стив Тейксейра И Ксавье Пачеко.
Автор: ShIvADeSt
Дата сообщения: 18.08.2010 04:38
JohnSilver182

Цитата:
А подскажите , зачем я такой код нагородил ??????????????????

Норм код, правильный, если хочешь правильно все получать.

прекращаем оффтоп по тому, какая книга лучше. Есть соотв тема для этого.

Автор: DmitryKz
Дата сообщения: 18.08.2010 09:09
Приветствую всех!
Подскажите по такому вопросу:
в Delphi 7 есть возможность вставлять кантролы с панелей компонентов непосредственно в панель Object TreeView (например, на форму)...
А в BDS2006 и далее это уже не прокатывает (т. е. в панель Structure). Эта возможность убрана или что-то в настройках надо включить? Я поискал там и не нашел...
Автор: JohnSilver182
Дата сообщения: 18.08.2010 17:32
Hi All

А может есть пример как в МОДУЛЕ создать динамически форму , текстбокс , получить данные от нее

Форма создается а Edit1 не вижу


Код: procedure CreateBT;
var
SomeForm: TForm;
Edit1: TEdit;
begin

SomeForm := tform.Create(application);
SomeForm.Position:=poMainFormCenter;

Edit1:= TEdit.Create(SomeForm) ;

Edit1.Top:=0;
Edit1.Left:=0;
Edit1.Width:=100;
Edit1.Height:=100;

SomeForm.ShowModal();
FreeAndNil(SomeForm);

end;
Автор: salexn1
Дата сообщения: 18.08.2010 17:35
Edit1.Parent := SomeForm;
Автор: Maks150988
Дата сообщения: 18.08.2010 18:09
Всем привет. Есть самоотрисовываемый листбокс. В нём вывожу нумерацию строк вначале каждого элемента. Хочется такой текст дополнять нулями. Видел в каком-то модуле подобную функцию, но не вспомню, тогда оно и не требовалось. Может кто подскажет реализации. Я даже нагуглить не могу такую ситуёвину, фиг знает как правильно слова для поискового запроса подобрать, выдаёт бред какой-то.
Автор: salexn1
Дата сообщения: 18.08.2010 18:15
Maks150988
В JvJclUtils есть функция AddChar
Автор: volser
Дата сообщения: 18.08.2010 18:41
Maks150988
FormatFloat
Автор: Maks150988
Дата сообщения: 18.08.2010 18:51
А блин пока написал тут уже свою реализацию накатал. Посмотрел какая надпись на статике этой опции у винампа. Zero pad называется.


Код: function CtrlWndItem_GetZeroPadText(iItem, iCount: Integer): WideString;
var
item : Integer;
count: Integer;
diff : Integer;
i : Integer;
begin

item := lstrlenW(LPWSTR(IntToStrW(iItem)));
count := lstrlenW(LPWSTR(IntToStrW(iCount)));
diff := count - item;

if (diff <> 0) then
for i := 1 to diff do
Result := Result + IntToStrW(0);

Result := Result + IntToStrW(iItem);

end;
Автор: ShIvADeSt
Дата сообщения: 19.08.2010 03:53
Maks150988

Цитата:
Result := Result + IntToStrW(0);

Это нули справа будут писаться, а по идее надо слева - тогда
Result := IntToStrW(0) + Result;

В дельфи юзается функций FormatStr но портировать ее в АПИ проект плохо - там куча вспомогательных функций юзается, код от которых просто разбухает.
Но так вот пример юзания ShowMessage(FormatStr('%.2d',[1]));
должно будет выдать мессагу с "01" текстом. Пишу на коленях - если что по хелпу проверьте.
Автор: Maks150988
Дата сообщения: 19.08.2010 11:45
ShIvADeSt
Хм, сейчас на мессаджбоксе проверил. Слева добавляются в строку. А хотя в этом случае даже если результат правее поместить в цикле, также будет. У меня же вначале функции результат пустой же. Или надо явно указывать Result := '' ?
Автор: ShIvADeSt
Дата сообщения: 20.08.2010 04:41
Maks150988

Цитата:
Хм, сейчас на мессаджбоксе проверил. Слева добавляются в строку. А хотя в этом случае даже если результат правее поместить в цикле, также будет. У меня же вначале функции результат пустой же. Или надо явно указывать Result := '' ?

Кажется понял в чем прикол - ты просто формируешь строку нулей, а потом прибавляешь ее к своей строке. Я просто делал функцию Leading_Zero которая к цифре прибавляла слева нули. Там было важно с какой стороны это делать. В твоем случае нет.
Автор: DmitryKz
Дата сообщения: 20.08.2010 07:59
Приветствую всех!
Я тут решил попробовать свои силы в переводе и для теста взял главу 10, The Ribbon из книги Marco Cantu Delphi 2009 Handbook. Сам перевод выложил здесь (+зеркала):
http://files.mail.ru/323U8R
http://ifolder.ru/18958929
http://narod.ru/disk/23902446000/Chapter10.pdf.html
А комментарии к качеству (весьма хотелось бы услышать), можно постить здесь.
Надеюсь, модератор не сочтет пост нарушением правил - все-таки дельфийская тема
Автор: asi81
Дата сообщения: 23.08.2010 16:19
Добрый день!

У меня есть TRichEdit, в нем есть какой то текст - как мне узнать минимальную высоту(Height) этого контрола, чтобы весь текст помещался в нем без скролл-баров?
Автор: salexn1
Дата сообщения: 23.08.2010 18:14
asi81
Здается мне, что никак....
Автор: psa1974
Дата сообщения: 23.08.2010 21:31
asi81

Цитата:
как мне узнать минимальную высоту(Height) этого контрола, чтобы весь текст помещался в нем без скролл-баров?

Если текст в RichEdit неформатированный (по крайней мере размер шрифта не меняется и соответствует значению RichEdit.font.size), то примерно [more=так:]
Код: procedure TForm3.Button2Click(Sender: TObject);
var
LineNum, LineHeight: Integer;

function GetFontHeight(const FontHandle: HFont): Integer;
var
DC: HDC;
OldDC: HDC;
Metrics: TTextMetric;
begin
DC := GetDC(0);
OldDC := SelectObject(DC, FontHandle);
GetTextMetrics(DC, Metrics);
SelectObject(DC, OldDC);
ReleaseDC(0, DC);
Result:= Metrics.tmHeight;
end;

begin
// кол-во строк:
LineNum:= SendMessage(RichEdit1.Handle, EM_GETLINECOUNT, 0, 0) + 1;
// высота символа:
LineHeight:= GetFontHeight(RichEdit1.Font.Handle);
RichEdit1.Height:= LineNum * LineHeight;
end;
Автор: asi81
Дата сообщения: 24.08.2010 12:41
psa1974
Спасибо - с TRichEdit работает. Правда c TcxRichEdit(DevExpress) - нет. SendMessage(Edit->Handle, EM_GETLINECOUNT, 0, 0) каждый раз возвращает единицу. Но это для меня не принципиально - буду пользоваться TRichEdit.
Автор: psa1974
Дата сообщения: 24.08.2010 14:05
asi81

Цитата:
Правда c TcxRichEdit(DevExpress) - нет

У DevExpress структура компаноидов несколько иная - у них там все компаноиды на самом деле являются оболочками над стандартными компоноидами и наследуются от TContainer, а собственно объект, инкапсулирующий окно представлен свойством InnerControl.
Т.е. при посылке сообщения надо указывать не cxRichEdit.Handle а cxRichEdit.InnerControl.Handle.
Автор: pavlo1704
Дата сообщения: 26.08.2010 07:38
Товарищи, подскажите, как настроить в Rave Reports 7.7 Альбомную ориентацию страницы
Автор: Aladdinych
Дата сообщения: 30.08.2010 10:43
Столкнулся вот с такой проблемой Delphi 5.
Есть форма, где редактируется запись из БД Firebird 2.0.
Точнее записи отбираются в TQuery и уже затем редактируются.
Часть полей заполняются из справочников по клику на соотв. кнопке, остальные редактируюся в своих DBEdit. С теми полями которые заполняются из справочников проблем нет. В событии OnClick для каждой кнопки стандартная последовательность:
query.edit
queryполе:=значение
query.post
Все работает.
А при изменении значения в Dbedit и нажатии на клавишу Enter возвращается старое значение.
Как победить проблему?
Автор: volser
Дата сообщения: 30.08.2010 15:32
Aladdinych
Зачем вы делаете post каждый раз? Пост отсылает данные к серверу. При открытии формы в зависимости от того создается запись или редактируется нужно делать Insert или Edit датасету. Дальше по кнопке "Сохранить" делаем Post датасету и комит тразакции.
Автор: Aladdinych
Дата сообщения: 30.08.2010 16:14
Проблема не в этом.
Как сделать, чтобы в поле DBEdit носле нажатия на Enter сохранялось измененное значение, а не восстанавливалось старое?
Автор: volser
Дата сообщения: 30.08.2010 18:54
Aladdinych
Сделать Post.
Автор: DmitryKz
Дата сообщения: 30.08.2010 23:59
Уважаемые Дельфийцы (и Билдеровцы)...
я тут решил предпринять попытку поднять популярность среды разработки Turbo. В первую очередь, конечно, перед людьми, пытающимися или желающими пользоваться лицензионным программным обеспечением. Желающими учиться программированию совершенно свободно. Как известно, среды Turbo не позволяли одновременное сосуществование на одном компе нескольких редакций. Т. е. разработчик был ограничен в выборе одного языка программирования. Я решил исправить этот недостаток (тем более что он был вызван не лицензионными ограничениями, а обычным недостатком инсталлятора, а компания Борланд, как известно, исправлять недостатки никогда не спешила).
Я усердно поработал почти всю прошлую неделю и в результате мне удалось поместить все 4 персоналити в один инсталлятор. Это тот же самый инсталлятор, который вы видели, когда, например, ставили BDS 2006 Architect, т. е. с возможностью выбора персоналити и настройки их компонентов. Эту сборку я условно назвал Borland Developer Studio 2006 Turbo. Я ее делал для себя, фактически, но, не буду скрывать, мне понравилось то, что получилось в результате. Из периодически читаемых сообщений на разных форумах я вижу, что люди ищут возможность установки двух персоналити, чтобы изучать, например, два языка программирования. Предлагался вариант использования утилитки Turbo Merger, но она очень мусорит в реестре, некорректно сводит персоналити, и не поддерживает 64битные операционки.
Не знаю, есть ли в моем посте нарушение, модератор если что укажет. Я ни в коем случае не рекламирую свое "творение", более того, ни в коем разе не считаю его своим, а принадлежащим компании Борланд. Моей была только работа по сведению. Я бы даже не назвал это сборкой - это полноценная среда, точно такая же, как хорошо знакомая многим среда BDS 2006, но Turbo, а мне просто захотелось поделиться с вами возможностью установить фактически полноценную среду разработки и совершенно легально ею пользоваться, не ограничивая себя каким-то одним языком... Среда совершенно работоспособна...
BDS 2006 Turbo я выложил на Ru-Tracker:
_http://rutracker.org/forum/viewtopic.php?t=3133245
Если нарушаю какие-то правила - пост, конечно, удалю...
Кстати, при интеграции персоналити я использовал самую первую версию Turbo Delphi (со всеми вытекающими отсюда последствиями Последствия можете заметить на скриншотах в теме...
Автор: DmitryKz
Дата сообщения: 02.09.2010 19:16
Подскажите, пожалуйста, как можно реализовать смену обоев рабочего стола с таким же эффектом перехода как Windows 7?
Автор: svs123456789
Дата сообщения: 11.09.2010 11:29
как в delphi 7 увеличить шрифт окна свойств - Object Inspector

Страницы: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374

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


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