⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 iwtmschecklist.pas

📁 TMS IntraWEb增强控件TMSIntraWeb_v2.3.2.1_D2007.rar
💻 PAS
📖 第 1 页 / 共 3 页
字号:
  for  i := 1 to FList.Count do
  begin
    if pos(', '+ flist.Strings[i - 1]+',',s) > 0 then
      Selected[i - 1] := true;
  end;
end;

procedure TTIWCheckList.SetDropDownFont(const Value: TIWFont);
begin
  FDropDownFont.Assign(Value);
end;

{$IFDEF TMSIW6}
function TTIWCheckList.RenderHTML(AContext: TIWBaseComponentContext): TIWHTMLTag;
{$ELSE}
function TTIWCheckList.RenderHTML: TIWHTMLTag;
{$ENDIF}
var
  htmlres: string;
  i: Integer;
  gradient, fontstyle, fontstyleDD: string;
  _sChkAll, _sUnChkAll, _hsChkAll, _hsUnChkAll, caScript, caLabeltext, caHinttext, scrollh: string;
  allchecked: string;
  redscroll: integer;


   function MakeAlign(AAlignment: TAlignment):string;
   begin
     Result := '';
     case AAlignment of
     taRightJustify: Result := ' style=text-align:right;';
     taCenter: Result := ' style=text-align:center;';
     end;
   end;

   function MakeScript(Name:string): string;
   begin
     Result :=
        '<Script Language="JavaScript">'#13

        + ' var dohide = 0;'

        + 'function '+HTMLName+'showdiv(){ '#13
        + ' if (document.getElementById("'+HTMLName+'checklist").style.visibility == "hidden"){'#13
        + ' document.getElementById("'+HTMLName+'checklist").style.visibility = "visible";'#13
        + ' document.onmouseup = '+HTMLName+'docMouseUp;'#13
        + ' }else {'#13
        + '	document.getElementById("'+HTMLName+'checklist").style.visibility = "hidden";'#13
        + ' } '#13
        + '} '#13

        + ' function '+HTMLName+'docMouseUp(){ '#13
        + ' if (dohide == 0) {'#13
        + '  document.getElementById("'+HTMLName+'checklist").style.visibility = "hidden";'#13
        + '  document.onmouseup = "";'#13
        + ' } else {'#13
        + ' dohide = 0; '#13
        + ' } '#13
        + '} '#13

        + 'function '+HTMLName+'resetdoc(){'#13
        + ' dohide = 1; '#13
        + '}'#13

        + 'function '+HTMLName+'UpdateList(){'#13
        + '	var editor = document.getElementById("'+HTMLName+'ED");'#13
        + '	editor.value = "";'#13
        + '  for (i=0;i<'+IntToStr(FList.Count)+';i++){'#13
        + '	  boxid = "'+HTMLName+'box" + i;'#13
        + '	  if (document.getElementById(boxid).checked)'#13
        + '	   editor.value += document.getElementById(boxid).value + ", ";'#13
        + '  }'#13
        + '	editor.value = editor.value.substr(0,editor.value.length-2);'#13
        + '}'#13

        + 'function ' + HTMLName + 'Focus(ctrl) {'#13;

      if FFocusColor <> FColor then
        Result := Result
        + 'ctrl.style.backgroundColor = '#39+HTMLClr(FFocusColor)+#39''#13;
      if FSelectAll then
        Result := Result
        + 'var rNew = ctrl.createTextRange();'#13
        + 'rNew.moveStart('#39'character'#39', 0) ;'#13
        + 'rNew.select();'#13;

      Result := Result
        + '}'
        + '</Script>';
  end;

  function StripCRLF(s:string): string;
  begin
    while pos(#13,s) > 0 do
      delete(s,pos(#13,s),1);
    while pos(#10,s) > 0 do
      delete(s,pos(#10,s),1);
    Result := s;
  end;


begin
  fontstyleDD := '';
  allchecked := 'true';
  if FSelected.Count < Items.Count then
    allchecked := 'false';

	_sChkAll := '';
	_sUnChkAll := '';
	_hsChkAll := '';
	_hsUnChkAll := '';
  scrollh := IntToStr(Height);

	if ((CheckAllBox) and (CheckAllHelp = htLabel)) then
	begin
    _sChkAll := CheckAllText;
  	_sUnChkAll := UnCheckAllText;
 	end;

	if ((CheckAllBox) and (CheckAllHelp = htHint)) then
	begin
		_hsChkAll := CheckAllText;
		_hsUnChkAll := UnCheckAllText;
	end;

  		caScript := '<Script Language="JavaScript">'#13
				+ ' var '+HTMLName+'allchecked = '+allchecked+'; '#13
				+ ' function '+HTMLName+'UpdateList(){'#13
				+ '	var editor = document.getElementById("'+HTMLName+'ED");'#13
				+ '	editor.value = "";'#13
				+ '  for (i=0;i<'+IntToStr(Items.Count)+';i++){'#13
				+ '	  boxid = "'+HTMLName+'box" + i;'#13
				+ '	  if (document.getElementById(boxid).checked)'#13
				+ '	   editor.value += document.getElementById(boxid).value + ", ";'#13
				+ '  }'#13
				+ '	editor.value = editor.value.substr(0,editor.value.length-2);'#13
				+ '} '#13#13
				+ 'function '+HTMLName+'CheckAll(){'#13
				+ ' if ('+HTMLName+'allchecked){ '#13
				+ '   for (var i=0;i<'+IntToStr(Items.Count)+';i++){ '#13
				+ '	    boxid = "'+HTMLName+'box" + i;'#13
				+ '      document.getElementById(boxid).checked = false;  }'#13
				+ '   '+HTMLName+'allchecked = false; '#13
				+ '   document.getElementById("'+HTMLName+'labeltext").innerHTML = "'+_sChkAll+'"; '#13
				+ '   document.getElementById("'+HTMLName+'boxCA").title = "'+_hsChkAll+'"; '#13
				+ '   } else { '#13
				+ '   for (var i=0;i<'+IntToStr(Items.Count)+';i++){ '#13
				+ '	    boxid = "'+HTMLName+'box" + i;'#13
				+ '      document.getElementById(boxid).checked = true; }'#13
				+ '   document.getElementById("'+HTMLName+'labeltext").innerHTML = "'+_sUnChkAll+'"; '#13
				+ '   document.getElementById("'+HTMLName+'boxCA").title = "'+_hsUnChkAll+'"; '#13
				+ '   '+HTMLName+'allchecked = true; '#13
				+ '   } '#13
				+ ' '+HTMLName+'UpdateList(); '#13
				+ '} '#13
  			+ '</Script>'#13;

  if (PopUpColor <> clNone) and (PopUpColorTo <> clNone) then
    gradient := ' background:'+HTMLClr(FPopUpColor)+';FILTER: progid:DXImageTransform.Microsoft.Gradient(GradientType=' +
        IntToStr(1 - Integer(PopUpColorGradientDirection)) + ', StartColorStr='#39
        + HTMLClr(PopUpColor) + #39', EndColorStr='#39 + HTMLClr(PopUpColorTo) + #39');'
  else
    gradient := ' background:'+HTMLClr(FPopUpColor)+';';

     if (Font.FontVariant = '') then
     begin
       {$IFDEF TMSIW6}
  //     fontstyle := ' style="' + Font.FontToStringStyle(AContext.WebApplication.Browser) + '"';
       fontstyle := Font.FontToStringStyle(AContext.WebApplication.Browser);
       {$ELSE}
//       fontstyle := ' style="' + Font.FontToStringStyle(WebApplication.Browser) + '"';
       fontstyle := Font.FontToStringStyle(WebApplication.Browser);
       {$ENDIF}
     end;
     if (DropDownFont.FontVariant = '') then
     begin
       {$IFDEF TMSIW6}
       fontstyleDD := DropDownFont.FontToStringStyle(AContext.WebApplication.Browser);
       {$ELSE}
       fontstyleDD := DropDownFont.FontToStringStyle(WebApplication.Browser);
       {$ENDIF}
     end;

  htmlres :=  caScript + MakeScript(HTMLName);

  htmlres := htmlres
     + '<style>.testmystyle {font-family:"Verdana";font-size:15pt}</style>'#13
     + '<table cellspacing="0" cellpadding="0" border="0" style="border-collapse: collapse"><tr>'#13
     + '  <td rowspan="2">'#13
     + '    <input type=' + IIF(FPasswordPrompt, 'password', 'input') + ' name="' + HTMLName +'"' + ' class="'+font.FontVariant+'" id="' + HTMLName +'ED"'
     + IIF(MaxLength > 0, ' maxlength=' + IntToStr(MaxLength))
     + ' style="' + fontstyle + ' width:' + inttostr(width-50) + 'px'
     + IIF(FFlat, ' border-style:solid;border-width:'+inttostr(FBorderWidth)+ 'px;border-color:'+HTMLClr(FBorderColor)+';')
     + '"'
     + ' size=' + IntToStr((Width div 7)-5)
     + ' value="' + Text + '"'
     + IIF(ReadOnly, ' readonly', '')
//     + ' style="width:'+inttostr(width-50)+';'
//     + IIF(FFlat, ' border-style:solid;border-width:'+inttostr(FBorderWidth)+ 'px;border-color:'+HTMLClr(FBorderColor)+';')
//     + '"'
     + ' onKeyPress="return false;"'
     + IIF(FAlignment <> taLeftJustify,MakeAlign(FAlignment))
     + IIF(FColor <> clWindow, ' style="background-color:'+HTMLClr(FColor)+'";')
     + ' onFocus="'+HTMLName+'Focus(this)";'
     + iif(FFocusColor <> FColor,' this.style.backgroundColor = '#39+HTMLClr(FColor)+#39';','')
     + '"'#13
     + '>'
     + '<BUTTON type="button"  value="..." onclick="'+HTMLName+'showdiv()"'
     + ' style="width:18px;height:22px;vertical-align:middle;text-align:center;padding:0px;top:-3;position:relative;">'
     + '<DIV style=" font-family:Webdings;font-size:9pt;margin:0px;padding:0px;border:0px;margin-top:-0.2em;margin-right:-0.1em;">'
     + ' <font face="webdings">6</font></DIV></BUTTON>'
     + '<br>';

    htmlres := htmlres
     + '<div  class="'+font.FontVariant+'" onMouseDown="'+HTMLName+'resetdoc();" id="'+HTMLName
     +'checklist" style="visibility:hidden; position:absolute; '+gradient
     + 'border-color:#000000;border-width:1px;border-bottom:2 outset;border-right:2 outset;border-style:solid;padding:2px;'
     + IIF(PopUpWidth > 0, ' width:'+IntToStr(PopUpWidth)+'px;', '')
     + IIF(PopUpHeight > 0, ' height:'+IntToStr(PopUpHeight)+'px;overflow:auto;', '')
//     + fontstyle
     + fontstyleDD
     + '">';

 		if ( (CheckAllBox) and (Items.Count > 0)) then
		begin
			redscroll := Height - 20;
			scrollh := IntToStr(redscroll);
		  caLabeltext := '';
			caHinttext := '';
			if (allchecked = 'false') then
			begin
				if (CheckAllHelp = htLabel) then
					caLabeltext := CheckAllText
				else if (CheckAllHelp = htHint) then
					caHinttext := CheckAllText;
			end
			else
			begin
				if (CheckAllHelp = htLabel) then
					caLabeltext := UnCheckAllText
				else if (CheckAllHelp = htHint) then
					caHinttext := UnCheckAllText;
			end;

    	htmlres := htmlres
      + '<div>'
			+ '<input type="checkbox" id="'+HTMLName+'boxCA" value="checkall" title="'+caHinttext+'"';

			if (allchecked = 'true') then
        htmlres := htmlres + ' checked ';

			htmlres := htmlres +
      '  onClick="'+HTMLName+'CheckAll();" > <span id="'+HTMLName+'labeltext">'+caLabeltext+' </span><br>'
			+ '</div>';
		end;

    for i := 0 to Flist.Count-1 do
    begin
      htmlres := htmlres + '<input type="checkbox" id="'+HTMLName+'box'+IntToStr(i)+'" value="'
        + FList.Strings[i] + '"'
        + IIF(Selected[i],'CHECKED','')+ ' onMouseDown="'+HTMLName+'resetdoc();" onClick="'+HTMLName+'UpdateList();"> '+ FList.Strings[i] + '<br>';
    end;

      htmlres := htmlres
     + '</div>'#13
     + ' </td>'#13
     + ' </tr></table>';

    if SupportsInput and Required then
    begin
      {$IFDEF TMSIW6}
      TIWComponent40Context(AContext).AddValidation('GSubmitter.' + HTMLName + '.value.length==0'
       , FriendlyName + ' is a required field.');
      {$ELSE}
      TIWAppForm(Owner).AddValidation('GSubmitter.' + HTMLName + '.value.length==0'
       , FriendlyName + ' is a required field.');
      {$ENDIF}
    end;


    {$IFDEF TMSIW6}
    TIWComponent40Context(AContext).AddToInitProc(HTMLName+'UpdateList();');
    {$ELSE}
    TIWAppForm(Form).AddToInitProc(HTMLName+'UpdateList();');
    {$ENDIF}



  Result := TIWHTMLTag.CreateTag('DIV');
  Result.Contents.AddText(htmlres);
end;


procedure TTIWCheckList.SetAlignment(const Value: TAlignment);
begin
  FAlignment := Value;
  Invalidate;
end;

procedure TTIWCheckList.SetBorderColor(const Value: TColor);
begin
  FBorderColor := Value;
  Invalidate;
end;

procedure TTIWCheckList.SetBorderWidth(const Value: Integer);
begin
  FBorderWidth := Value;
  Invalidate;
end;

procedure TTIWCheckList.SetColor(const Value: TColor);
begin
  FColor := Value;
  Invalidate;
end;

procedure TTIWCheckList.SetFlat(const Value: Boolean);
begin
  FFlat := Value;
  Invalidate;
end;


procedure TTIWCheckList.SetList(const Value: TStringList);
begin
  FList.Assign(Value);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -