Jump to content
СофтФорум - всё о компьютерах и не только

Помогите с Delphi


Recommended Posts

Короч есть у мя исходник программы вот при запуске исходников в делфи выдаёт много ошибок

Вот не которые из ошибок которые пишит .

Class TDBGridEh not faund. Ignore the error and continue?

NOTE: Ignoring the error may cause components to be deleted or property values to be lost.

Я пишу игнор и он опять кидает следующую ошибку.

Class TEDBimage not faund. Ignore the error and continue?

NOTE: Ignoring the error may cause components to be deleted or property values to be lost.

Ищё выбивает следующую ошибку .

Error reading Splitter1.ExplicitTop: Property ExplicitTop does not exist.

Ignore the error and continue?

NOTE: Ignoring the error may cause components to be deleted or property values to be lost.

Как я понял у делфи нету тех компонентов на которых исходники , как понять коких компонентов мне не хватает?

помогите плизз

Link to comment
Share on other sites

  • 1 month later...

Судя по наименованию класса Вы пытаетесь скомпилировать проект

содержащий компоненты из библиотеки EhLib

Это стороняя библиотека компонентов для Delphi

Ее необходимо проинсталировать, зарегестрировать пакеджи в делфи

после чего все классы которые Вы перечислили появятся :-)

Вот так.

melckiy: когда делфи ставил, ПОЛНУЮ установку делал?

TDBGridEh - не входит в стандартную поставку делфи необходимо скачать

и доставить отдельно

Link to comment
Share on other sites

  • 2 years later...

Основательно уже подзабыл Делфи, но хочу немного изменить вид давно написанной проги.

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

Link to comment
Share on other sites

Основательно уже подзабыл Делфи, но хочу немного изменить вид давно написанной проги.

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

Вот фрагмент кода по событию OnDrawCell для таблицы.

Выделяет красным полем и белым цветом текст ячейки, помеченную как ошибочную в массиве ArrayOfErr

Отрихтуй под себя.

procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState);varS:String;beginS:=Form1.StringGrid1.Cells[ACol,ARow];Form1.StringGrid1.Canvas.Brush.Color:=clMoneyGreen;if ARow mod 2 = 0 then begin Form1.StringGrid1.Canvas.Brush.Color:=RGB(255,255,150);end;if ARow=0 then Form1.StringGrid1.Canvas.Brush.Color:=clBtnFace;Form1.StringGrid1.Canvas.FillRect(Rect);Form1.StringGrid1.Canvas.TextOut(Rect.Left+2,Rect.Top+2,S);if ArrayOfErr[ACol,ARow] then beginwith Form1.StringGrid1.Canvas do begin	Brush.Color:=clRed;	Font.Color:=clWhite;	FillRect(Rect);	TextOut(Rect.Left+2,Rect.Top+2,S); end;end;end;

Надеюсь на место подальше от двигателя в звездном корвете :)

Edited by Teddy_Bear
Link to comment
Share on other sites

Отрихтуй под себя.

:) Если бы я всё помнил. Понимаю что надо впихнуть строку типа:

StringGrid1.Cells[3, gridx]:= clBlue ;

Но куда и как оформить, пока не соображу. :dontgetit:

Надеюсь на место подальше от двигателя в звездном корвете

И возле иллюминатора. :)

Link to comment
Share on other sites

procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState);//ACol - колонка таблицы, ARow - строка, Rect - прямоугольник, которому соответствует ячейка на канве таблицыvarS:String;gridx:Integer;begingridx:=2;   		//Не знаю, как ты передаешь эту переменнуюS:=Form1.StringGrid1.Cells[ACol,ARow];               			//Считываем текст в ячейкеForm1.StringGrid1.Canvas.Brush.Color:=clMoneyGreen;          	//Цвет фона - мой любимый - люблю деньги и зеленые особенно :)if ARow=0 then Form1.StringGrid1.Canvas.Brush.Color:=clBtnFace;  //Цвет первой строки таблицы (типа серый)Form1.StringGrid1.Canvas.FillRect(Rect);             			//Заполнение прямоугольника, соответствующего ячейкеForm1.StringGrid1.Canvas.TextOut(Rect.Left+2,Rect.Top+2,S);  	//Занесение туда тектса (закрашенного при заливке прямоугольникаif ACol=gridx then begin                             			//условие - если колонкк имеет номер grdix with Form1.StringGrid1.Canvas do beginBrush.Color:=clBlue;                            	//Выбор цвета заливкиFont.Color:=clWhite;                            	//Выбор цвета текстаFillRect(Rect);                         			//заливка прямоугольникаTextOut(Rect.Left+2,Rect.Top+2,S);              	//занесение текста поверх прямоуг end;end;end;

Или уточни задание.

Edited by Teddy_Bear
Link to comment
Share on other sites

StringGrid1.Cells[3, gridx]:= clBlue ;

Увы, Cell не объект (не подобъект StringGrid, как можно бы было предположить по точке, отделяющей Grid от Cells. Поэтому тупо вручную закрашиваем и восстанавливаем текст на событие отрисовка ячейки - OnDrawCell. Благо Дельфя предоставляет положение этого прямоугольника через Rect независимо от того, проскроллил ли ты грид и куда.

Link to comment
Share on other sites

Или уточни задание.

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

.PNG

post-10287-0-84530100-1300635194_thumb.p

Link to comment
Share on other sites

 // Глобальный массив ArrColTab:Array[0..100] of TColor;procedure TForm1.FormCreate(Sender: TObject);...for k:=0 to 24 do begin ArrColTab[k]:=clWhite;end;ArrColTab[3]:=clSkyBlue; назначаем фиксированные цвета избранным колонкамArrColTab[5]:=clAqua;ArrColTab[8]:=clYellow;ArrColTab[10]:=RGB(128,200,197);...end;procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState);varS:String;clCellsNow:TColor;beginS:=Form1.StringGrid1.Cells[ACol,ARow];if ARow=0 then beginclCellsNow:=clBtnFace;; end else beginif ArrColTab[ACol]=clWhite then begin   	clCellsNow:=clMoneyGreen;   	if ARow mod 2 = 0 then begin  	//     	clCellsNow:=RGB(255,255,150);   //полоски по горизонтали - бесплатный бонус    	end;                          	// 	end else begin   	clCellsNow:=ArrColTab[ACol]; end;end;with Form1.StringGrid1.Canvas do begin Brush.Color:=clCellsNow; FillRect(Rect); TextOut(Rect.Left+2,Rect.Top+2,S);end;end; 

Для замены на строки ACol заменить на ARow

Edited by Teddy_Bear
Link to comment
Share on other sites

Здесь как-то изначально закрасили строки. Мне бы также, только столбцы.

 ArrColTab:Array[0..100] of TColor;procedure TForm1.FormCreate(Sender: TObject);...for k:=0 to 24 do begin ArrColTab[k]:=clWhite;end;ArrColTab[1]:=RGB(248,182,246); //Цвета по образцуArrColTab[2]:=RGB(254,237,200);ArrColTab[3]:=RGB(184,226,246);ArrColTab[4]:=RGB(183,248,220);ArrColTab[6]:=clAqua;ArrColTab[8]:=clYellow;ArrColTab[10]:=RGB(128,200,197);...end;procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState);varS:String;clCellsNow:TColor;beginS:=Form1.StringGrid1.Cells[ACol,ARow];if ARow=0 then beginclCellsNow:=clBtnFace; end else beginif ArrColTab[ARow]=clWhite then begin   	clCellsNow:=clMoneyGreen; 	end else begin   	clCellsNow:=ArrColTab[ARow]; end;end;if ACol=0 then clCellsNow:=clBtnFace;with Form1.StringGrid1.Canvas do begin Brush.Color:=clCellsNow; FillRect(Rect); TextOut(Rect.Left+2,Rect.Top+2,S);end;end;

С отступами беда ...

Edited by Teddy_Bear
  • Upvote 1
Link to comment
Share on other sites

Спасибо, попытаюсь вспомнить. Думал закрасить пару колонок - дело нескольких строчек.

Edited by Skif
Link to comment
Share on other sites

Подумалось, а нельзя ли внести цвет для нескольких колонок в том редакторе Дельфина, где отражаются все сойства объектов, расположенных на форме?

Link to comment
Share on other sites

Подумалось, а нельзя ли внести цвет для нескольких колонок в том редакторе Дельфина, где отражаются все свойства объектов, расположенных на форме?

Повторюсь, увы, Cell не объект (не подобъект StringGrid, как можно бы было предположить по точке, отделяющей Grid от Cells). Соответственно, через инспектор объектов не поуправляешь.

Возможно, есть компонент с такими свойствами, но сомневаюсь.

Посмотри на http://www.delphiplus.org/ БЕСПЛАТНО=> Rx Library за 2010 год - может появилось.

По раскраске Grid ссылочка с подробными объяснениями

http://www.delphikingdom.com/asp/viewitem.asp?catalogid=168

Впрочем, принципиально нового там нет - ручное управление через OnDrawCell.

  • Upvote 2
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...