1 (edited by muserun 2020-11-26 09:16:43)

Topic: Изменение цвета ячейки по условию.

Здравствуйте.
Собрали небольшую программу по учету поставщиков и поставок.
Есть поля НАЧАЛО СРОКА ПОСТАВКИ и КОНЕЦ СРОКА ПОСТАВКИ Типы полей ДАТА. Есть условие В РАБОТЕ и ЗАВЕРШЕНО. Выставляется в ручную.Т..Е. заполняю форму выставляя сроки  начала и окончания и в поле СТАТУС ПОСТАВКИ выставляю ВЫПОЛНЯЕТСЯ.
Хотелось бы реализовать так чтобы при выполнении условия СТАТУС ПОСТАВКИ - В РАБОТЕ и при проверке даты окончания за 3-4 дня ячейка окрашивалась в красный цвет как предупреждение о возможной просрочке сроков поставки,но при выставлении СТАТУС ПОСТАВКИ -ЗАВЕРШЕННО поле получало зеленый цвет или же просто получало стандартный цвет. Спасибо

Re: Изменение цвета ячейки по условию.

Ваше условие
  Form1.TableGrid1.Cell[0,0].Color:=$00FFFFFF;

Re: Изменение цвета ячейки по условию.

Cell[0,0] ?????

Re: Изменение цвета ячейки по условию.

Поля  first_data    end_data  status_weel

Re: Изменение цвета ячейки по условию.

muserun wrote:

Cell[0,0] ?????

счет начинается с нуля
[колонка, срока]

Re: Изменение цвета ячейки по условию.

ОК!!!!!!!!! Спасибо.

Re: Изменение цвета ячейки по условию.

muserun wrote:

Поля  first_data    end_data  status_weel

цвет колонок меняется скриптом в самой таблице

Re: Изменение цвета ячейки по условию.

?

Re: Изменение цвета ячейки по условию.

muserun wrote:

Могу я дать исходник?

можно

только дайте точное описание

10

Re: Изменение цвета ячейки по условию.

Here is an example from my program:


procedure frmMain_tgOrders_OnChange (Sender: TObject);
CONST
    DATE_ORD = 5; DATE_PO = 7; DATE_REQ = 8; ORD_QTY = 9; ORDER_REC = 10; DUE = 11;
var
row, column, rowcnt, colcnt: integer;
begin

   rowcnt := frmMain.tgOrders.RowCount -1;
   colcnt := frmMain.tgOrders.Columns.Count -1;

   frmMain.tgOrders.BeginUpdate;
   for row := 0 to rowcnt do
   begin
       if frmMain.tgOrders.Cells[DUE,row] = '0' then     //Complete order received colour red/pink
       begin
           for column := 0 to colcnt do
           begin
               frmMain.tgOrders.Cell[column,row].Color := $00BDA8FD;
           end;
      end
      else
      
      {Part order received   colour Blue}
          if (frmMain.tgOrders.Cells[DUE,row] < frmMain.tgOrders.Cells[ORD_QTY,row])    then     //Complete order received
           begin
               for column := 0 to colcnt do
               begin                                       //light blue
                   frmMain.tgOrders.Cell[column,row].Color :=$00FFFFA8; // interesting brown $0065AACD;
               end;
          end
    
      else
    
        {Quote pending colour green}
          if (frmMain.tgOrders.Cells[DATE_REQ,row] <> '') AND (frmMain.tgOrders.Cells[DATE_PO,row] ='') then
           begin
               for column := 0 to colcnt do
               begin                                          //light green
                   frmMain.tgOrders.Cell[column,row].Color := $00B4F2B6;
               end;
          end
    
      else
    

    {To be ordered colour yellow}
    if  ((frmMain.tgOrders.Cells[DATE_ORD,row] = '')AND (frmMain.tgOrders.Cells[DATE_PO,row] ='') AND (frmMain.tgOrders.Cells[DATE_REQ,row]= '')) then
       begin
           for column := 0 to colcnt do
           begin                                          //light yellow
               frmMain.tgOrders.Cell[column,row].Color := $0080FFFF;
           end;
      end;

   end;
  frmMain.tgOrders.EndUpdate;

end;
On a clear disk you can seek forever

11 (edited by pt.82 2020-11-27 08:04:57)

Re: Изменение цвета ячейки по условию.

procedure FrmSotrudniki_TableGrid2_OnChange (Sender: TObject);
var
i, Ii, cR, cC,k, l: integer;
sID: string;
begin
 cR := FrmSotrudniki.TableGrid2.RowCount - 1;
 cC := FrmSotrudniki.TableGrid2.Columns.Count -1;
 FrmSotrudniki.TableGrid2.BeginUpdate;
 for i := 0 to cR do
   begin
      if (StrToDateTime(FrmSotrudniki.TableGrid2.Cells[4,i])- Date <=30) and (StrToDateTime(FrmSotrudniki.TableGrid2.Cells[4,i])- Date >=0)   then
        begin
          for Ii:=0 to Cc do FrmSotrudniki.TableGrid2.Cell[Ii,i].Color := $006F6FFF;
        end;
        if (Date - StrToDateTime(FrmSotrudniki.TableGrid2.Cells[4,i]) >0) then
        begin
          for Ii:=0 to Cc do FrmSotrudniki.TableGrid2.Cell[Ii,i].Color := clSilver;
        end
   end;
   FrmSotrudniki.TableGrid2.EndUpdate;
end;

Re: Изменение цвета ячейки по условию.

procedure frmGeneral_tblPostavkiSearchObchaya_OnChange (Sender: TObject);
var
    i, Ii, cR, cC,k, l: integer;
    sID: string;
begin
 cR := frmGeneral.tblPostavkiSearchObchaya.RowCount - 1;
 cC := frmGeneral.tblPostavkiSearchObchaya.Columns.Count -1;
 frmGeneral.tblPostavkiSearchObchaya.BeginUpdate;
 for i := 0 to cR do
     begin
          if (StrToDateTime(frmGeneral.tblPostavkiSearchObchaya.Cells[4,i])- Date <=30) and (StrToDateTime(frmGeneral.TableGrid2.Cells[4,i])- Date >=0)   then
            begin
              for Ii:=0 to Cc do frmGeneral.tblPostavkiSearchObchaya.Cell[Ii,i].Color := $006F6FFF;
            end;
            if (Date - StrToDateTime(frmGeneral.tblPostavkiSearchObchaya.Cells[4,i]) >0) then
            begin
              for Ii:=0 to Cc do frmGeneral.tblPostavkiSearchObchaya.Cell[Ii,i].Color := clSilver;
            end
       end;
   frmGeneral.tblPostavkiSearchObchaya.EndUpdate;
end;

13 (edited by muserun 2020-11-27 10:56:14)

Re: Изменение цвета ячейки по условию.

Смотрите есть поле end_date с ID= 6 в tblPostavkiSearcheObchaya  Это дата последнего дня выполнения поставки. Хотелось-бы чтобы за 3 дня до наступления даты строка окрашивалась в красный цвет при условии,что поле с ID=10 имело значение ВЫПОЛНЯЕТСЯ Но при условии что поле с ID=10 имело любое другое значение поле не окрашивалось. Спасибо

Re: Изменение цвета ячейки по условию.

procedure frmGeneral_tblPostavkiSearchObchaya_OnChange (Sender: TObject);
var
    i, Ii, cR, cC, k, l: integer;
    sID: string;
begin
 cR := frmGeneral.tblPostavkiSearchObchaya.RowCount - 1;
 cC := frmGeneral.tblPostavkiSearchObchaya.Columns.Count -1;
 frmGeneral.tblPostavkiSearchObchaya.BeginUpdate;
 for i := 0 to cR do
     begin
            begin
           if (frmGeneral.tblPostavkiSearchObchaya.Cells[9,i] = ' Выполняется ') and (StrToDate(frmGeneral.tblPostavkiSearchObchaya.Cells[6,i])- Date <=30) or (StrToDate(frmGeneral.tblPostavkiSearchObchaya.Cells[6,i])- Date >=0) then
            begin
              for Ii:=0 to Cc do frmGeneral.tblPostavkiSearchObchaya.Cell[Ii,i].Color := $00DDDDFF;
            end;
            if (Date - StrToDate(frmGeneral.tblPostavkiSearchObchaya.Cells[6,i]) >0) then
            begin
              for Ii:=0 to Cc do frmGeneral.tblPostavkiSearchObchaya.Cell[Ii,i].Color := clWhite;
            end;
            end;
     end;
end;

Не работает

Re: Изменение цвета ячейки по условию.

проверьте на вхождение в условие

if (frmGeneral.tblPostavkiSearchObchaya.Cells[9,i] = ' Выполняется ') and (StrToDate(frmGeneral.tblPostavkiSearchObchaya.Cells[6,i])- Date <=30) or (StrToDate(frmGeneral.tblPostavkiSearchObchaya.Cells[6,i])- Date >=0) then
            begin
               ShowMessage('');
            end;

и удалите лишние  begin end

16 (edited by muserun 2020-11-28 04:18:28)

Re: Изменение цвета ячейки по условию.

Что я делаю не так. Естественно сообщение не появляется

if (frmGeneral.tblPostavkiSearchObchaya.Cells[9,i] = ' Выполняется ') and (StrToDate(frmGeneral.tblPostavkiSearchObchaya.Cells[6,i])- Date <=30) or (StrToDate(frmGeneral.tblPostavkiSearchObchaya.Cells[6,i])- Date >=0) then
            begin
               ShowMessage('');
            end;

Лишнее удалил

17 (edited by muserun 2020-11-28 05:21:16)

Re: Изменение цвета ячейки по условию.

Если убрать

(frmGeneral.tblPostavkiSearchObchaya.Cells[9,i] = ' Выполняется ')

то строка изменяет цвет,но условие при значении поля ' Выполняется '  не срабатывает.
Ну,не программист я...

Re: Изменение цвета ячейки по условию.

То что значение  ВЫПОЛНЯЕТСЯ берется из словаря - это может играть роль?

19 (edited by sibprogsistem 2020-11-28 14:02:48)

Re: Изменение цвета ячейки по условию.

muserun wrote:

То что значение  ВЫПОЛНЯЕТСЯ берется из словаря - это может играть роль?

скорее нет..
проверьте что Вы получаете в этом запросе

for i := 0 to cR do
     begin
showmessage(frmGeneral.tblPostavkiSearchObchaya.Cells[9,i]);
end;

Re: Изменение цвета ячейки по условию.

Спасибо. Не помогло. Закажем в Delphi на фрилансе. Своих навыков не хватает.Еще раз спасибо.Удачи.

21 (edited by derek 2020-11-29 10:08:03)

Re: Изменение цвета ячейки по условию.

Здравствуйте Muserun,
Это часть старой программы, которую я изменил, чтобы делать то, что, как я считаю, вам нужно.
Это помогает?
С Уважением,
Derek.

Post's attachments

Attachment icon muserun.zip 355.58 kb, 267 downloads since 2020-11-28 

Re: Изменение цвета ячейки по условию.

Так понимаем и инсталлятор создать невозможно.Постоянно ругается на то что не может сделать запись в setting.ini Не видит базу данных. Пробовали собрать  в InnoSetup

23 (edited by sibprogsistem 2020-11-29 09:41:11)

Re: Изменение цвета ячейки по условию.

muserun wrote:

Так понимаем и инсталлятор создать невозможно.Постоянно ругается на то что не может сделать запись в setting.ini Не видит базу данных. Пробовали собрать  в InnoSetup

нормально собираю в inno setup, что-то Вы делаете не так
 
рабочий скрипт

; Script generated by the Inno Setup Script Wizard.
; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!

#define MyAppName "QuestionD_v1.0"
#define MyAppVersion "1.0"
#define MyAppPublisher "Павленко В В"
#define MyAppExeName "QuestionD.exe"

[Setup]
; NOTE: The value of AppId uniquely identifies this application. Do not use the same AppId value in installers for other applications.
; (To generate a new GUID, click Tools | Generate GUID inside the IDE.)
AppId={{E9EF258A-576D-42A3-BD11-EC26E205E13B}
AppName={#MyAppName}
AppVersion={#MyAppVersion}
;AppVerName={#MyAppName} {#MyAppVersion}
AppPublisher={#MyAppPublisher}
DefaultDirName={userdocs}\{#MyAppName}
DefaultGroupName={#MyAppName}
AllowNoIcons=yes
; The [Icons] "quicklaunchicon" entry uses {userappdata} but its [Tasks] entry has a proper IsAdminInstallMode Check.
UsedUserAreasWarning=no
; Uncomment the following line to run in non administrative install mode (install for current user only.)
;PrivilegesRequired=lowest
OutputDir=E:\Desktop
OutputBaseFilename=QuestionD
SetupIconFile=D:\myProjects\logo.ico
Compression=lzma
SolidCompression=yes
WizardStyle=modern

[Languages]
Name: "english"; MessagesFile: "compiler:Default.isl"
Name: "russian"; MessagesFile: "compiler:Languages\Russian.isl"

[Tasks]
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked
Name: "quicklaunchicon"; Description: "{cm:CreateQuickLaunchIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked; OnlyBelowVersion: 6.1; Check: not IsAdminInstallMode

[Files]
Source: "E:\Desktop\QuestionD\QuestionD.exe"; DestDir: "{app}"; Flags: ignoreversion
Source: "E:\Desktop\QuestionD\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
; NOTE: Don't use "Flags: ignoreversion" on any shared system files

[Icons]
Name: "{group}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"
Name: "{group}\{cm:UninstallProgram,{#MyAppName}}"; Filename: "{uninstallexe}"
Name: "{autodesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon
Name: "{userappdata}\Microsoft\Internet Explorer\Quick Launch\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: quicklaunchicon

[Run]
Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent

Re: Изменение цвета ячейки по условию.

Вывели все как есть,но ругается

25 (edited by sibprogsistem 2020-11-29 11:06:12)

Re: Изменение цвета ячейки по условию.

muserun wrote:

Вывели все как есть,но ругается

нужно изменить на свои настройки... ну да ладно, используйте мастер настроек

выберите в основном меню   File-New откроется визуальный мастер