PDA

Просмотр полной версии : Delphi 7 Помогите please!


Тарифы: МТС, Билайн, МегаФон
Выгодные непубличные тарифы МТС, Билайн, МегаФон, Безлимитный интернет ✅
just nothing...
04-09-2006, 22:44
Подскажите пожалуйста, как распечатать записи из обычного TDBGrid в Delphi?
И еще вопрос: если для вывода на печать использовать ExcelApplication будет ли прога работать под Windows 98? :confused: :frown:

Rain
04-09-2006, 23:08
Што за вопросы... в любую доку по делфям влезаешь и там куча вариантов по этому поводу... QuickReport, ReportBuilder, etc... RTFM.
Какая хер разница, 98 или ХР? Лишь бы офис стоял )

just nothing...
05-09-2006, 07:19
Большая *** разница, некоторые проги под XP идут, а в 98 не работают, а у ExcelApplication в свобках уточнение стоит Word XP. Вот я и хочу спросить у знающих людей, этот компонент будет в 98 работать или ему обязательно XP подавай? :confused: :)

Neyron
05-09-2006, 11:05
подними виртьуальную машину и проверь.

Rain
05-09-2006, 17:11
Word XP есть компонент Word из комплекта Office XP.
Если поставишь вышеозначенный офис, то работать будет. В Windows 98 или в Windows ХР ли - похер.

Matr!x
05-09-2006, 17:38
самое простое решение - юзать стандартный QuickReport. Посмотри демки из комплекта дельфей, там всё элементарно.

РабЛизун
09-09-2006, 00:50
Если еще актально можешь поизучать такую функцию.
Лишнее удалить, где надо - чуть подправить под себя. Содрано с живого проекта. Моего.

procedure ExGridToExcel(aGrid:TwwDBGrid;aStatusBar:TStatusBar);
Var
ExApp:TExcelApplication;
ExWB:ExcelWorkbook;
ExWS:ExcelWorkSheet;
LUD:Integer;
Arr:OleVariant;
ArrBool:Array of boolean;
N,NC,CR:Integer;
Tb:TDataSet;
Pos:Variant;
Rg:ExcelRange;
fld:TField;
begin
LUD:=LOCALE_USER_DEFAULT;
ExApp:=TExcelApplication.Create(Application);
ExApp.ConnectKind:=ckNewInstance;
ExApp.AutoConnect:=true;
ExApp.AutoQuit:=false;
ExApp.Connect;
// ExApp.Visible[LUD]:=false;
ExWB:=ExApp.Workbooks.Add(EmptyParam,LUD);
ExWS:=ExWB.Worksheets.Item[1] as ExcelWorkSheet;
NC:=aGrid.GetColCount-2;
Tb:=aGrid.DataSource.DataSet;
Arr:=VarArrayCreate([0,NC],varVariant);
Pos:=Tb.Fields[0].Value;
Tb.First;
CR:=2;
for N := 0 to NC do Arr[N]:=aGrid.Columns[N].DisplayLabel;
SetLength(ArrBool,NC+1);
for N:= 0 to NC
do begin
fld:=Tb.FieldByName(aGrid.Columns[N].FieldName);
ArrBool[N]:=((fld.DataType in [ftString,ftFixedChar,ftWideString]) and(fld.Size=1))
end;
Rg:=ExGetRange(ExWS,1,1,NC+1,1);
Rg.Value2:=Arr;
Rg.Font.Bold:=True;
Rg.Interior.ColorIndex:=15;
Rg.HorizontalAlignment:=xlCenter;
Rg.VerticalAlignment:=xlCenter;
Rg.WrapText:=true;
Rg.Borders.LineStyle:=xlContinuous;
Rg.Borders.Weight:=xlThin;
while not Tb.Eof
do begin
for N := 0 to NC
do begin
if not ArrBool[N]
then Arr[N]:=aGrid.GetFieldValue(N)
else Arr[N]:=StrReplace(aGrid.GetFieldValue(N),['T','F'],['X',' ']);
end;
Rg:=ExGetRange(ExWS,1,CR,NC+1,CR);
Rg.Value2:=Arr;
inc(CR);
if ((CR-1) mod 50)=0
then begin
if aStatusBar<>nil then begin aStatusBar.Panels[1].Text:=IntToStrB(CR-1); aStatusBar.Refresh; end;
end;
Tb.Next;
end;
Dec(CR);
if aStatusBar<>nil then begin aStatusBar.Panels[1].Text:=IntToStrB(CR); aStatusBar.Refresh; end;
ExApp.Visible[LUD]:=true;
for N := 0 to NC do
if aGrid.Columns[N].FieldName<>''
then ExRangeFormat(ExGetRange(ExWS,N+1,2,N+1,CR),Tb.FieldByName(aGrid.Columns[N].FieldName).DataType,true);
ExMediumBorder(ExWS,1,1,NC+1,1);
ExMediumBorder(ExWS,1,2,NC+1,CR);
try
Tb.Locate(Tb.Fields[0].FieldName,Pos,[]);
except

end;
end;

user_amd
15-09-2006, 16:14
Товарисчи посоветуйте книжечку по delphi для начинающих....надо мне очень!

Factor X
15-09-2006, 17:05
Зайди в книжный любой обязательно найдешь!
Я когда начинал купил книжку "Программирование в DELPHI 7" автор: Архангельский А.Я
Здоровенная книжонка,толстая все популярно изложено и расписано,можно сказать с 0 + в комплекте дискетка с примерами !:)

kiver
15-09-2006, 17:53
Про книгу у спецов спрашивай на програмистских сайтах, по яндексу найди по слову delphi. А то может автор шарлатан, не все же разбираются в тонкостях.

user_amd
15-09-2006, 22:32
А может кто даст ссылочки чтоб скачать книжки? Скачал уже Библия Delphi...тоже хвалили кто-то!

РабЛизун
15-09-2006, 23:15
Идешь на программерский сайт, спрашиваешь (а скорее ищешь, что уже советовали другим) там.
Изучаешь.
По мере работы буешь все меньше находить в книгах, а больше сам если сам не смог - опять на програмерский сайт, читать FAQ и архив постов.
Если такой вопрос, который у тебя возник, еще ни кто не задавал (если конечно он не относится к категории "тупых и само собой разумеющихся") ни на одном из больших тематических сайтов, поздравишь себя с переходом на иной качественный уровень. В прочем к тому моменту и сам все будешь понимать.

Например, посмотри тут
http://www.delphikingdom.ru/library/

user_amd
16-09-2006, 21:27
Еще вопросец- есть у меня книжка по delphi 2006, а я как бы хочу изучать delphi 7, так вот по этой книге можно? Делфи7 и 2006 совместимы?

РабЛизун
17-09-2006, 01:18
По крупному - в Delphi 7 нет программирования под .Net
Базовые конструкции естественно не поменялись. Пробуй, если что из примеров не идет - значит в семерке этого еще не было.
Можно также поискать в инете табличку сравнения возможностей или почитать последовательно разделы "что нового" для Delphi 2005 и Delphi 2006.

Max Snake
17-09-2006, 02:46
Чета не пойму, в ВУЗ дельфи чтоль все еще толкают ?

Вы в курсе что борланд отказался от выпуска сред разработки (билдеры всякие) под все языки пр. ?

user_amd
17-09-2006, 04:50
Я вобщето в технаре учусь еще....у нас преподают- только хреново...

user_amd
29-09-2006, 15:05
Вроде немного освоил Delphi(самые легкие проги могу написать), но хочу научиться работать с реестром(да и курсовую задали на тему ваша система, т.е. чтоб железо твое описывала прога). Прочитал много всего по реестру, ничего не понял. Если кому не сложно напишите хотя бы для одного проца (как я понял адрес вот этот [HKEY_LOCAL_MACHINE\HARDWARE\DESCRIPTION\System\CentralProcessor\0]). Надо очень… Эти козлы в технаре ничему не учат – а только требовать умеют….

Matr!x
29-09-2006, 15:23
uses Registry;

.........

function GetProcessorName : string;
var
reg: TRegistry;
begin
reg:=TRegistry.Create;
reg.RootKey:=HKEY_LOCAL_MACHINE;
if reg.OpenKey('\HARDWARE\DESCRIPTION\System\CentralProcessor\0', false) then
result:=reg.ReadString('ProcessorNameString');
reg.Free;
end;

user_amd
29-09-2006, 15:24
спасибо! Не ожидал такого быстрого ответа....

user_amd
29-09-2006, 15:33
Опять я...Стыдно конечно мне, но я чет не могу это нигде вывести....чтобы в смысле в форме это было показано....поможет кто в таком запущенном случае?! Это надо в Лейбл(LABEL) выводить?!Или как?

ManInXRay
29-09-2006, 15:50
Можно в Label, а можно и в Memo (свойство Text) в несколько строк выводить, что-то вроде отчета.

Добавлено: люди в свое время Turbo Pascal по хелпу и примерам изучали, а молодежь, что, хуже? Так что поиск рулит ;)

user_amd
29-09-2006, 16:10
Не могу я понять никак….как вывести?! Че писать?! Напишите пожалуйста полностью.
Видать не быть мне программистом((
Дома три книги - и ни в одной нет ничего про реестр...бля!!!

user_amd
29-09-2006, 16:12
кто только это придумал....бля

Max Snake
29-09-2006, 16:13
тяжело в учении - легко в бою!

user_amd
29-09-2006, 16:41
Никто мне не объяснит чтоли?! Давайте вот этот пример полностью распишем, а дальше я уж думаю догоню....просто не разу не делав чего-либо сложно очень....

user_amd
29-09-2006, 17:39
?????

Matr!x
29-09-2006, 18:49
советую взять какую-нить книжку попроще и читать с самого начала...

по теме: ставишь кнопку и label на форму. тыкаешь два раза на кнопку и пишешь: label1.caption:=GetProcessorName;

должно получиться вот так:

Rom@ntic
29-09-2006, 19:14
Либо так
Создаешь новую форму на нее кладешь кнопочку - Button1 и метку - Label1
Кликаешь два раза по кнопке и там можно прописать так:

procedure TForm1.Button1Click(Sender: TObject);
var
Reg: TRegistry;
begin
Reg := TRegistry.Create;
try
Reg.RootKey := HKEY_LOCAL_MACHINE;
if Reg.OpenKey('\Hardware\Descriplion\System\CentralProcessor\0', False) then
Label1.Caption:= Reg.ReadString('ProcessorNameString');
finally
Reg.Free;
end;
end;

end.


Не забудь перед выполнением наверху где у тебя располагаеться весь код в Uses добавить - Registry
Получиться примерно так:

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Registry;

user_amd
29-09-2006, 19:36
Все нормально...получается! Теперь дальше сам буду пробовать разбираться!

user_amd
05-10-2006, 23:06
Еще вопрос возник: Когда я ставлю на форму рисунок (компонент Image) то он перекрывает все Метки, жму Управление-пренести ниже, и вроде все нормально…но фон шрифта не прозрачен, т.е. он не в цвет картинки, как сделать чтобы таких косяков не было? А то вроде почти красиво, но портит все этот дибильный фон под буквами….

user_amd
05-10-2006, 23:23
Стоило мне мпросить, как сам разобрался....
Выделяешь Метку и в свойстве Transporent ставишь true....

Matr!x
06-10-2006, 12:39
еще чтобы не мерцало при перерисовке, у контейнера(формы например), выстави DoubleBuffered:=true;

user_amd
06-10-2006, 13:10
Теперь не могу понять что надо написать чтобы он читал из реестра REG_DWORD(например – частота процессора в Мгц и объем мозгов)…
REG_SZ - он читает, а вот DWORD нет…. Как это реализовать?!

И еще:
1)Сложно ли написать чтобы прога тестировала производительность ПК? И скорость записи\чтения на винт/ОЗУ?
2)Можно ли, и как реализовать мониторинг температуры процессора?

user_amd
06-10-2006, 16:04
ну что?

user_amd
06-10-2006, 20:14
Ну как dword прочитать?

user_amd
07-10-2006, 21:27
Все еще не могу прочитать DWORD....
Жду помощи