~~~~~~~ Basic-KadFrame Changes Log ~~~~~~~~~~~~~~~~~~~~~~~~~~~

======= 960413 =========================================
- Removed 'Coarse/Fine Analog' range limitation.

======= 960207 =========================================
- The 'KPicture' control converted to 'Actuator'. It now has 'Excitation' and 'Flow' analogs.
- Added the 'Coarse/Fine Analog' option to Actuator Type in general property page.

======= 960125 =========================================
- Redesigned 'KPicture' control:
	- If 'strDictionaryName' Attrib be empty and the selected image be GIF, then the GIF image will Play/Pause by 'bIsOn' Attrib.
- Fixed some bugs (Closing Action Dialog - Anchor of Alarm - ...)	


======= 951023 =========================================
- Added the following option in 'Trends.ini' file: [Setting] nTrendLive_BaseInterval_ms = 1000  (Valid value ranges: 100, 1000 ms)
- In 'MainApp.ini' file, the section '[Shift-Operators]' is renamed to '[Dictionary.Shift-Operators]'. So operators have ID.
- Added operator ID to new shift dialog.
- Added the following system Tags: nActiveShiftRecordID, nShiftOperatorID, strShiftOperatorName, nLastShiftOperatorID, strLastShiftOperatorName.
- Added 'nOperatorID' field to 'Alarm' and 'WorkShift' table in database.
- made 'strActiveRecipeName' system tag retentive.

======= 950908 =========================================
- Added Turn On/Off command to KPicture. (Added: bHasOnOffCommand, bShowOnOffMenu, bTurnOn, bIsOn, bInterlockTurnOn, bInterlockTurnOff, strNoInterlockTurnOn, strNoInterlockTurnOff)
   		@ The 'nSelectedImageID_Edit' will get it's value from 'bIsOn' when 'bHasOnOffCommand' is 1. So 'nSelectedImageID_Edit' can accept bool Tag indirectly.
- Added two attrib to KButton: 'strLabel_WhenTrigIsTrue', 'strLabel_WhenTrigIsFalse'
- Added two attrib to KCheckBox: 'strLabel_WhenCheckIsTrue', 'strLabel_WhenCheckIsFalse'
- Fixed saving Black (0) value of 'clrText' in KLabel by adding new 'clrTextWhenBoolTagIsOff' attrib.
- Fixed login issue when saving LoadInWay option in property page.
- Removed 'FP' (GetFloatPointLocation) from serial DCT.
- Enhanced internal HwLinker engine. Removed some of post-messeges.

======= 950510 =========================================
- Fixed loggin 'Shift' table.
- Modbus RTU is changing to add Modbus TCP (NOT released yet!).

======= 950504 =========================================
- KCheckBox now has Login option for changing its check option (Use Attrib: nLoginGroup_ToTrig).
- The 'strActiveRecipeName' Tag, is now used as one field in Alarm table. Asign it to Attrib of one control to get value (Example Attrib: KComboBox::strSelectedString_Edit).
- All Login actions is logged in log file.

======= 950325 =========================================
- Added Auto Logout by last login time.
- All KadFrame sections, use one login procedure. Login once and use in 'AttribScout', 'TagScout', ...
- Added 'Show Recording State' to table menu.
- Fixed bug of creating 'AlarmSingle' control from Attrib scout.

======= 950324 =========================================
- Added Retentive Tags feature. Add retentive tag in 'DCT\RetentiveTags.ini'
- The 'Date' type Tags can be used in Calc-Tags.
- Search engine of Tag Scount window redesigned:
	- Added 'Highlight' or 'Hide' option for serach result
	- Search multiple words is now available. All results concatenate together.

======= 950217 =========================================
- Tag Scount window redesigned using MFC Grid library.
- The "Access Control" menu is moved from Tools menu to top level.
- Changed Licence: Up to 100 Tags is now free.
- Added self detection Alarm in Vessel. See Attribs: bInternal_LLA, bInternal_HLA, fAlarmHysteresis_Percent
- KSlider now accept float value.
- Fixed bug of 'KButton::bEnable_Edit' attrib when a Tag is assigened to it.
- Added BtnAttribDescription in attrib scout dialog.

======= 941208 =========================================
- KButton will set to ReadOnly when bEnabel_Edit attrib is set to false.
- Fixed crash of KadFrame when updating 'nAtcivePageID' tag.

======= 941207 =========================================
- Auto optimized Serial-Modbus16 engine for offline devices.
  --> The offline device automatically demoted to reading its items up to 30 seconds. (AutoPaused 1 to 30 seconds).
- Added two new system Tags: 'strAtcivePageName' and 'nAtcivePageID'.
- KadFrame always switch to first page after launching (switch to PageID 1).
- Added two new Attribs to KButton: 'strGoToPage_ByName' and 'nGoToPage_ByID'.
- Removed 'strTagDataExpression' from DCT files. So new column format in DCT file is:
	--> 01-Name, 02-DataType, 03-DefaultData, 04-HWType, 05-IOType, 06-HwAccessPath, 07-NetworkAccessPath, 08-DataStackSize
- The "Sti2Dct-941205.exe" is released for this version of KadFrame and newer.
- In DCT files, The 'DataStackSize' column is used in OPC tags. In the other hand it can have non-zero value for OPC tags.
- The 'Advantech' Driver is removed from DataCenter engine. Please delete 'Adsapi32.dll' from your project directory.
- Fixed the action of 'bEnable_Edit' attrib in KButton, when it has assigned Tag.

======= 941016 =========================================
- Fixed bug of displaying Text on Splash Screen!

======= 941011 =========================================
- Enhanced 'License' system to support multiple Machine ID.
- Fixed multiple crashes: Analog Calibration, Database, ...

======= 940930 =========================================
- All View automatically enlarged (by adding Scrollbar) to fit all Controls. (Also at runtime).

======= 940929 =========================================
- KadFrame4 automatically converts 'Basic-X.ini' files to 'X.ini' files.

======= 940926 =========================================
- Added new option to KButton::eButtonActionType Attrib. Value 5 means 'GoToPageX' that is set in KButton::strGoToPageName Attrib.
- The 'Analogs.Phy' Attribs now accept int Tag.
- Fixed the crash when switching 'Action' dialog.

======= 940920 =========================================
- Introduced KadFrame 4 by adding Multi-View support.
- Removed the "Basic-" from all ini files.

$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
~~~~~~~~~~~~~~~~~~~~~ KadFrame 4 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$

======= 940529 =========================================
- Added 'License' system to KadFrame.

======= 940326 =========================================
- Added 'strConfirmaMessage_TrigToOn' and 'strConfirmaMessage_TrigToOff' to KCheckBox control.
	- If strConfirmaMessage_XXX is not empty, it will be showed to user as OK/Cancel question, when changing Check state.
- Added ability to enter unicode name (e,g: Farsi name) in new user dialog.
- Fixed bug in renaming of Controls from menu.

======= 940305 =========================================
- Fixed bug in saving some value [of Controls that it location and size is changed].

======= 940222 =========================================
- Added Dictionary based Pictures to KPicture control.
- Fixed bug in saving some value [of Control that has RecipeID].
- Fixed editing the 'strText_Edit' Attrib of KEditBox that has no Tag.
- Fixed moving control in when main view is scrolled [by adding CResizableFormView::OnScrollBy()].
- Removed 'Start Process' and 'Stop Process' from menu.
- Removed HardCoded ProcessState & StepStates.
- Removed m_pContainer->SendMessageToParent() from BaseShape for performance improvement.

======= 931216 =========================================
- The Ini file Engine rewrote from scratch. It use cashed file.
	- The performance of Ini Engine increased up to 1000%. So KadFrame launches 3 time faster in big applications!
	- The first line of ini file stamped by Persian date.
	- Ini engine prevent from duplicate section and duplicate key.
	- The 'section' and 'key' name is now case insensitive
	- The Ini engine saves Ini file well formed. Find difference by Merge application :)
- Fixed one bug of login system.

======= 931026 =========================================
- Fixed bug of force relogin option.
- Fixed drawing bug for TrendDB

======= 930922 =========================================
- Redesigned and simplified Login dialog.
- Added login option to 'On/Off menu' and 'Action menu' of all controls. (Use the 'nLoginGroup_ToTrig' attrib)
- Fixed the Login procedure bugs in KButton and other controls.

======= 930921 =========================================
- Added 'nLoginGroup_ToDownload' & 'nLoginGroup_ToSave' attribs to all KShape derived controls.
- Added 'nLoginGroup_ToTrig' attrib to KButton control.
- Added 'nAutoEnterByDeleySp' attrib to KEditBox control.
- Added new system Tag: 'strLoggedInUser'.

======= 930901 =========================================
- Fixed updating system tags: strShiftStartTime, strShiftEndTime.

======= 930830 =========================================
- Added 'KPicture' control that can show any pictures including gif animation file.
- KadFrame convert all used ini, dct, ... files automatically to UNICODE if need.
- Added two system tags: strShiftStartTime, strShiftEndTime.

======= 930713 =========================================
- Added 'Enter' key to C_KEditBox to accept value.
- Added 'Escape' key to C_KEditBox to undo edit and reload attrib value.
- Fixed bug of Trend Online and Offline that first and last point is joined together!.
- Fixed bug of Int number limitation in C_KEditBox.
- Fixed bug of CopyToClipboard that was caused by unicode!

======= 930512 =========================================
- Fixed bug of Network communication that was caused by unicode!

======= 930510 =========================================
- KadFrame III is created.
   -- MultiTab Interface
   -- Unicode
   -- Support Office 2007 themes
- BackColor of View can be changed by Double Right click on View. 
   -- Main.ini --> [Graphics]  strBackColorOfView=RGB(0,255,0)
- KEditBox: Editing float number is delayed by timer to have easier interface.
- Fixed bug of CalcDataStackAverage() for 16 bit data.

 

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

======= 930405 =========================================
- Fixed bNeedToDownload bug for bool attribs.
- Fixed Editing number in KEditBox.

======= 930314 =========================================
- Added Attrib 'nOnTimeAppID' to all actuators (Valve, GearPump). This attrib changes only when 'bTurnOn' Attrib goes True.
- Activated 'nFloatPointPosInDisplay1' Attrib in KEditBox. This attrib limits float point digits.
- Fixed dispalying Zero number in EditBox at application startup.

======= 930212 =========================================
- Fixed SprayDriyer Control and removed all extra Analogs (Use KLable instead).

======= 930130 =========================================
- Added 'strSelectedString' Attrib to KComboBox.

======= 921225 =========================================
- Added the following group based Tag to KadFrame: bTrigToUploadFromPLC_Group 
- The following group based Tag is renamed: bTrigToDownloadToPLC_GroupN, bTrigToSaveToIni_GroupN, bTrigToLoadFromIni_GroupN

======= 921222 =========================================
- Added Save/Load ability to KShape controls using 'nRecipeID' Attrib.
- Added the following group based Tag to KadFrame: nRecipeID_GroupN 

======= 921221-S2 =========================================
- Added the following group based Tags to KadFrame: bNeedToDownload_GroupN, bTrigToDownload_GroupN, bTrigToSave_GroupN, bTrigToLoad_GroupN.

======= 921221-S1 =========================================
- Added DateTime range selection to Trend Offline.
- Added 'IsReadOnlyFromTag' property to following attribs: bHideCtrlInView & bEnable_Edit.
  So fixed Auto checking tick of CheckBox.
- Added 'bAllowOnlyIntegerNumber' to EditBox.

======= 921206 =========================================
- Fixed Trend Offline Bug in drawing!

======= 921124 =========================================
- Fixed bug of internal MessageQueue of KadFrame by removing Posted Message to destroyed Window!

======= 921120 =========================================
- Removed Start&Stop Toolbar & Menu!
- Added renaming DeviceName to AttribScout tools (S2)

======= 921119 =========================================
- Added bInterlock_Edit & strInterlock_Edit Attribs to KShape derived controls.
- Fixed NeedToDownload of KEditBox (S2)

======= 921117 =========================================
- Added bNeedToDownload Attrib to KShape derived control.

======= 921113 =========================================
- Fixed Online Trend inactivity bug!  (Version: S2)
- Added Confirmation MessageBox and Trig Balloon message to KButton.

======= 921110 =========================================
- Added diffrent eButtonActionType to KButton.

======= 921102 =========================================
- Added Dictionary to KComboBox & KLable
- Added EnableWindow to KShapes

======= 921017 =========================================
- Added Slider, CheckBox
- Added Design Time Mode to menu 'Help'

======= 921016 =========================================
- Added Design Time Mode to LableShape
- Enhanced LabelShape

======= 921007 =========================================
- New Trend Offline :)
- Internal Performance: Attrib Added by ID instead by Index

======= 920909 =========================================
- Added one optional Analog General to label. (To use, first set Attrib 'bHasAnalogGeneral')

======= 920825 =========================================
- Added Variat DataType to Attrib. (So bug of bulk lable usage in Modbus communication is fixed).

======= 920813 =========================================
- Removed HwLinker modal error message!

======= 920728 =========================================
- Updated Modbus deriver to support 'CoilStatus' & 'InputStatus' & 'HoldRegister' & 'InputRegister'.

======= 920727 =========================================
- Allowed Variat Tag for 'Phy' and 'Port' attribs!

======= 920612 =========================================
- Fixed the bug in DataBaseRecorder. This bug exist from version 920427!

======= 920609 =========================================
- Added New About Box. It shows Registered'Tag' Count and other info.

======= 920519 =========================================
- Added nText1SourceID selector in Vessel to select reference of Text that will be displayed on body.
- The unit of Text1 & Text3 in Vessel made configurable.
- The Trends now used 'Tag' instead 'Attrib' as DataSource.
- In TCP Connection config, the %Server% and %Same% keys made insensitive.

======= 920510 =========================================
PostMessage() usage Bug fixed. If PostMessage() fails, it will be Queued by KadFrame!

======= 920506 =========================================
Added bDataIsSavable property to Attribs. The Attribs like AR_PHY_VALUE, AR_PORT_VALUE is NOT saved in INi.

======= 920427 =========================================
Engine Bug fixed temporary: If PostMessage() fails, it will be replaced by SendMessage() function.

======= 920413 =========================================
Removed unused 'fPortValuePrecision' from Tag definition.
Added master password!


======= 920325 =========================================
باگ رسم پايبينگ رفع شد. در هنگام ديليت كردن يك لاين به اشتباه لاين ديگري از صفحه حذف مي شد
البته در ورژن قديمي با ريستارت كادفريم مشكل رسم لاين رفع مي شد

======= 920225 =========================================
به كنترل ليبل، قابليت تغيير رنگ بكگراند در حالت آن-آف اضافه شد 
New Attribs: clrBack1, clrBack2
به كنترل ليبل اتريب اينترلاك براي روشن شدن و اينترلاك براي خاموش شدن اضافه شد
در صورتي كه اينترلاك برقرار نباشد اپراتور اجازه روشن و يا خاموش كردن ليبل را نخواهد داشت
عدم وجود اينترلاك با يك پيغام قابل تنظيم در اتريب توسط بالون به اپراتور نمايش داده مي شود
New Attribs: bInterlockTurnOn, bInterlockTurnOff, strNoInterlockTurnOn, strNoInterlockTurnOff

======= 920217-O1 =========================================
جاي نمايش بالون آلارم سينگل در يك جاي ثابت و مشخص توسط اتريب قابل تنظيم است.
در كنترل وسل درصد شروع و اتمام شارژ از طريق صفحه پروپرتي قابل تنظيم است.

======= 920122-S1 =========================================
- اتریب بلینک در لیبل تکمیل شد. مثلا دیتاسورس دمو با بلینک نمایش داده می شود.
- دو تگ سیستمی bIsDataSourceDemo و bIsDataSourceReal اضافه شد.
- حالت گرافیکی Localو حالت در فرمول نبودن به کنترل ویفیدر اضافه شد
- تایمر T13 از برنامه PLC حذف شد و به جاش دو تایمر عددی برای از زمان استارت پروسه و از زمان استپ پروسه اضافه شد که در صفحه کادفریم هم نمایش داده می شود.
- تایمر nStartupAlarmServicDelay که برای تاخیر در تشخیص آلارم دویشن استفاده می شود از طریق کادفریم قابل تنظیم شد. 
- توسط bIsInStartupPeriod جمله استاتوس "پروسه در حال اجرا است" در چند ثانیه اول استارت به صورت بلینک درمی آید.
منوی های اتریب اسکات برای استفاده راحت تر طراحی دوباره شد.

======= 911202-O2 =========================================
Added Floating-Point (IEE-754) to Serial-Modbus16.

======= 911112-O3 =========================================
Added StartTimer(vTimerID, vStart, vTurnZero) function to Calc-Tag engine
Added GetTimer(vTimerID) function to Calc-Tag engine

قابليت تايمر به انجين تگ محاسباتي كادفريم اضافه شد.
فرمت توابع به شكل زير مي باشد.

StartTimer(vTimerID, vStart, vTurnZero) 
GetTimer(vTimerID) 

مفهموم سه پارامتر تابع StartTimer
-	vTimerID يك عدد ثابت يا حاصل يك فرمول است كه بايد در رنج 1 تا 100 باشد. (يعني 100 تايمر داريم)
-	vStart يك عدد ثابت 0 يا 1 يا مقدار تگ يا حاصل فرمول مي تواند باشد.
-	vTurnZero يك عدد ثابت 0 يا 1 يا مقدار تگ يا حاصل فرمول مي تواند باشد.

دوپارامتر آخر 4 حالت زير را شكل مي دهند:
vStart=0 & vTurnZero = 0 : تايمر استپ مي شود و مقدار آن ثابت مي ماند. (به عبارت ديگر Pause مي شود)
vStart=0 & vTurnZero = 1 : تايمر استپ مي شود و مقدار آن نيز صفر (ريست) مي شود.
vStart=1 & vTurnZero = 0 : تايمر از مقدار جاري استارت مي شود (به عبارت ديگر Resume مي شود)
vStart=1 & vTurnZero = 1 : تايمر از مقدار صفر استارت مي شود.

تابع GetTimer زمان سپري شده از تايمر مشخص شده با vTimerID را در واحد ثانيه كه داراي اعشار است، بر مي گرداند.


======= 911112-O1 =========================================
Compeleted Actuar base Action's dialog (New Inc-Dec Analog Action)
Added Word-Order for Holding Registers of Modbus16 (Main.ini --> [SerialPortSetting] bIsHighWordFirst=1)
Fixed bug of Write data of Tag in HW when changed by Tag-Scout

=======================
910719:
Add SQL Server Support

=======================
910602:
 Added Calc-Tags to KadFrame (Documanted in "Kad Frame Calc-Tags using muParser 910602.avi")

=======================
901018:
اجزا شكل وسل قابل كانفيگ شد

//
//     Tp   |<-- Th -->|	Th:TopHead, Tp:TopPipe, Ts:TopSlope, Vb:VerticalBody, 
//     Ts  /            \
//     Vb |              |
//        |              |
//     BS  \            /
//     BP   |<-- BH--> |	Bp:BottomHead, Bp:BottomPipe, Bs:BottomSlope
//

float fTopHead		= GetValueInt(VI_nShapeTopHead		) / 100.0f;
int nTopPipe		= GetValueInt(VI_nShapeTopPipe		);
int nTopSlope		= GetValueInt(VI_nShapeTopSlope		);
int nVerticalBody	= GetValueInt(VI_nVerticalBody		);
int nBottomSlope	= GetValueInt(VI_nShapeBottomSlope	);
int nBottomPipe		= GetValueInt(VI_nShapeBottomPipe	);
float fBottomHead	= GetValueInt(VI_nShapeBottomHead	) / 100.0f;




=======================
901017:
 GroupBox پوزيشن مستطيل حاوي اطلاعات پروسس قابل كانفيگ شد
ْ

=======================
901011:
تغيير بزرگ در قابليت كانفيگورشن كادفريم
كليه كنترل هاي بيس (15 نوع) و كنترلهاي سطح اپليكشن به صورت دايناميك قابل اضافه شدن به آي ان آي هستند
يعني به هر تعداد وسل، بلت، پمپ، ... كه بخواهيم مي توانيم به كادفريم اضافه كنيم


=======================
901007:
انجين محاسبه و كنترل فلو در دو مود سرور و كلاينتي شبكه كار مي كند. پس استفاده از اين نسخه در مود سرور زياد كاربردي نخواهد بود.
