Poslední příspěvky

Stran: 1 [2] 3 4 ... 10
12
MS SQL / Re:Kde jsou data ?
« Poslední příspěvek od Radek Červinka kdy 20-02-2018, 08:28:25 »
..
  DataModule1.FDQuery.SQL.Clear;
  DataModule1.FDQuery.SQL.Text:='DELETE FROM box_comp WHERE A2C=:A2C AND Line=:Line AND Count=:Count AND MyStamp=:TimeStamp';
  DataModule1.FDQuery.ParamByName('A2C').AsString:=BoxComp[ARow].A2C;
  DataModule1.FDQuery.ParamByName('Line').AsString:=CompList.MyLine;
  DataModule1.FDQuery.ParamByName('Count').AsInteger:=BoxComp[ARow].Count;
  DataModule1.FDQuery.ParamByName('TimeStamp').AsFloat:=BoxComp[ARow].MyStamp;
..

Chyba moze byt v tom, ze  DataModule1.FDQuery.Params.. nemaju urceny vopred typ parametrov.
Query nie je "Prepared" a v podstate neprijma ziadne hodnoty, aj ked sa zda, ze ano..

Klikni si v "Object Inspector" na "DataModule1.FDQuery"
a tam
Params (TFDParams)
Rozbal tie 4 parametre a pridaj im hodnoty DataType resp FDDataType

To je špatná rada, jednak mění SQL, tedy FireDac automaticky vytvoří sadu parametrů a za druhé se spoléhat na nastavení parametrů z design modu je dlouhodobě cesta do záhuby. Teď jsem to řešil u jednoho velkého cizího projektu, kdy v design modu byly nastaveny parametry, které se datově shodovaly (resp. v okamžiku vzniku i názvově), ale jejich jména se časem (>10 let) rozešla se jmény v DB.

Takže v kodu pořád fungovalo ParamByName, protože to našlo parametr z design modu a typově pořád odpovídal parametru na pozici v DB, ale jakmile se něco provedlo se storedProc (resp. se zavedl validace parametrů během migrace na FireDac z in-house komponent z doby D5) tak se to hodně rozsypalo.

Vzhledem k tomu, že FireDac cachuje parametry bych se nebál vykašlat se na parametry z design modu.

P.S.: já pokud mohu, tak se komponentám v datamodulu snažím vyhnout.


13
Mobilní vývoj / Re:TActionList a zatuhnutie aplikacie
« Poslední příspěvek od chaloup kdy 19-02-2018, 14:12:06 »
Mě ten hotfix nefunguje, jen to napíše hotovo a žádný soubory to nezmění, naštěstí je dole v komentáři link na zip se souborama a nahradil jsem si to ručně...
14
Obecné / Re:Barva ListBoxu
« Poslední příspěvek od František kdy 19-02-2018, 12:09:00 »
mňa napadlo, že či to nebude problém s VCL styles
15
Obecné / Re:Barva ListBoxu
« Poslední příspěvek od Delfin kdy 18-02-2018, 18:36:46 »
Kód: [Vybrat]
Z kodu ktery okolo kontroluje zda je [b]DC==0[/b]:
Nerozumim: kdyz je Message.DC==0, tak si o DC rekne volanim BeginPaint()

Noo, mel jsem na mysli selhani BeginPaint. Vim, vetsi sance by asi byla kdyby upadl kus Mesice a odletel smerem k Madarsku a pak dale do vesmiru, ale i tak. Jsem proste paranoidni ;D
16
Obecné / Re:Barva ListBoxu
« Poslední příspěvek od pf1957 kdy 18-02-2018, 18:18:30 »
Mel bys vratit nenulovy vysledek pokud se snazis systemu rict ze jsi WM_ERASEBKGND zpravu zpracoval.
Ano, souhlasim, je to nejaky kod, ktery tu mam v archivu z dob D1, ale zrejme to fungovalo i bez toho.

Kód: [Vybrat]
Z kodu ktery okolo kontroluje zda je [b]DC==0[/b]:
Nerozumim: kdyz je Message.DC==0, tak si o DC rekne volanim BeginPaint()
17
Obecné / Re:Barva ListBoxu
« Poslední příspěvek od Delfin kdy 18-02-2018, 18:02:47 »
Mel bys vratit nenulovy vysledek pokud se snazis systemu rict ze jsi WM_ERASEBKGND zpravu zpracoval.

Hrabal jsem se v archivu a nasel jsem tohle, coz odpovida tomu popisu v me predchozi odpovedi:
Kód: [Vybrat]
procedure TQueueBox.WMEraseBkGnd(var AMsg: TMessage);
begin

end;

Z jakeho duvodu by mohlo probehnout?

Kód: Delphi [Vybrat]
  1. PaintListBox(0);

Z kodu ktery okolo kontroluje zda je DC==0:

Kód: Delphi [Vybrat]
  1. PaintListBox(DC);

A vubec, v cem je vlastne problem? Zkousel jsem na Windows 7 s Delphi Tokyo simulovat co je tady popsane, avsak bez uspechu.
18
Obecné / Re:Barva ListBoxu
« Poslední příspěvek od pf1957 kdy 18-02-2018, 17:45:22 »
Díky. Doufala jsem, že se někde bude dát zapnout "pracuj jenom s obsahem"/"pracuj s celým listBoxem", že jsem jenom slepá. Nebo nepoučená. Ale měla jsem tušení, že to tak snadné nebude :) Takto se na to nejspíš vykašlu...
Hrabal jsem se v archivu a nasel jsem tohle, coz odpovida tomu popisu v me predchozi odpovedi:
Kód: [Vybrat]
  tQueueBox        = class(tListBox)
  protected
  public
    constructor      Create(aOwner:tComponent); override;
    procedure        WMEraseBkGnd(var aMsg:tMessage); message WM_ERASEBKGND;
    procedure        WMPaint(var Message: TWMPaint);  message WM_PAINT;
    procedure        PaintListBox(DC:HDC);
  end;
a implementace
Kód: [Vybrat]
    {-------------------------------------------------------------------}
    {M}{----} constructor tQueueBox.Create                            {*}
    {*}                   (aOwner:tComponent);                        {*}
    {-------------------------------------------------------------------}
    begin
      inherited Create(aOwner);
      Align       := alClient;
      ItemHeight  := 18;
      MultiSelect := TRUE;
      Style       := lbOwnerDrawFixed;
    end;

    {-------------------------------------------------------------------}
    {M}{----} procedure   tQueueBox.WMEraseBkGnd                      {*}
    {*}                   (var aMsg:tMessage);                        {*}
    {-------------------------------------------------------------------}
    begin
    end;

    {-------------------------------------------------------------------}
    {M}{----} procedure   tQueueBox.WMPaint                           {*}
    {*}                   (var Message:TWMPaint);                     {*}
    {-------------------------------------------------------------------}
    var
      DC: HDC;
      PS: tPaintStruct;
    begin
      DC := Message.DC;
      if DC=0 then
        DC := BeginPaint(Handle,PS);
      try
        PaintListBox(DC);
      finally
        if Message.DC=0 then
         EndPaint(Handle,PS);
      end;
    end;

    {-------------------------------------------------------------------}
    {M}{----} procedure   tQueueBox.PaintListBox                      {*}
    {*}                   (DC:HDC);                                   {*}
    {-------------------------------------------------------------------}
    var
      DrawItemMsg:       TWMDrawItem;
      MeasureItemMsg:    TWMMeasureItem;
      DrawItemStruct:    TDrawItemStruct;
      MeasureItemStruct: TMeasureItemStruct;
      R:                 TRect;
      I:                 integer;
      Y,H,W:             UINT;
    begin
    {-Initialize drawing records}
      with DrawItemMsg do
        begin
          Msg := CN_DRAWITEM;
          Ctl := Handle;
        end;
      DrawItemMsg.DrawItemStruct := @DrawItemStruct;
      with DrawItemStruct do
        begin
          CtlType := ODT_LISTBOX;
          CtlID   := Handle;
          itemAction := ODA_DRAWENTIRE;
          hDC      := DC;
          hwndItem := Handle;
        end;
    {-Intialize measure records}
      with MeasureItemMsg do
        begin
          Msg   := CN_MEASUREITEM;
          IDCtl := Handle;
        end;
      MeasureItemMsg.MeasureItemStruct := @MeasureItemStruct;
      with MeasureItemStruct do
        begin
          CtlType := ODT_LISTBOX;
          CtlID   := Handle;
        end;
    {-Draw the listbox}
      Y := 0;
      I := TopIndex;
      GetClipBox(DC,R);
      H := Height;
      W := Width;
      while Y<H do
        begin
          DrawItemStruct.itemState := 0;
          if I<Items.Count then
            begin
              with DrawItemStruct do
                begin
                  if Selected[I] then
                    itemState := itemState or ODS_SELECTED;
                  if (GetFocus=self.Handle) and (I=ItemIndex) then
                    itemState := itemState or ODS_FOCUS;
                  itemID := I;
                end;
              with MeasureItemStruct do
                begin
                  itemID   := I;
                  itemData := Longint(Pointer(Items.Objects[I]));
                end;
            end
          else
            begin
              MeasureItemStruct.itemID := dword(-1);
              DrawItemStruct.itemID    := maxint;
            end;
          with MeasureItemStruct do
            begin
              itemWidth  := W;
              itemHeight := self.ItemHeight;
              DrawItemStruct.itemData := itemData;
              Dispatch(MeasureItemMsg);
              DrawItemStruct.rcItem := Rect(0,Y,itemWidth,Y+itemHeight);
              Dispatch(DrawItemMsg);
              Inc(Y,itemHeight);
              Inc(I);
            end;
        end;
    end;
19
Obecné / Re:Barva ListBoxu
« Poslední příspěvek od Lenka kdy 18-02-2018, 17:07:43 »
Díky. Doufala jsem, že se někde bude dát zapnout "pracuj jenom s obsahem"/"pracuj s celým listBoxem", že jsem jenom slepá. Nebo nepoučená. Ale měla jsem tušení, že to tak snadné nebude :) Takto se na to nejspíš vykašlu...
20
Obecné / Re:Barva ListBoxu
« Poslední příspěvek od pf1957 kdy 17-02-2018, 18:40:44 »
bych se, kdyby to fungovalo pořád stejně. Ale nepřišla jsem na to, jak mám nastavit, aby se zabarvil celý prostor ListBoxu bez ohledu na text v něm... Proč to někdy jde a jindy ne... A proč to v TreeView funguje naprosto bezvadně.
No protoze neni widget jako widget. Uz jsem s tim dlouho nic nedelal, ale listbox odchytaval zpravu WM_ERASEBKG (nebo jak se to presne jmenuje) a tim jednak zpusoboval blikani pri prekreslovani a dvak vykresloval jen tolik radku, kolik existovalo, takze zbytek prostoru zustaval neprebarveny. Uz si to nepamatuju, co jsme s tim delavali, protoze pred jsme presli na Lischkeho  "Virtual Everything" a pouzivali to i misto listboxu. Mam dojem,  ze kdysi v dobach D1,2 jsem spolknul WM_ERASEBKG a kreslil prazdne (neexistujici) radky do zaplneni view portu. Ale HOSIP.
Stran: 1 [2] 3 4 ... 10