Poslední příspěvky

Stran: [1] 2 3 ... 10
1
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
2
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()
3
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.
4
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;
5
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...
6
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.
7
Obecné / Barva ListBoxu
« Poslední příspěvek od Lenka kdy 17-02-2018, 18:29:21 »
Dobrý den,
nerada zdržuji trivialitou, ale už si nevím rady... Mám ve formuláři TreeView, ListBox a hromadu tlačítek. Chci uživateli usnadnit orientaci a slabým podbarvením vždy zvýraznit komponentu, se kterou právě pracuje. Ani jednu nemůže přímo editovat, jen vybírá v TreeView položky do ListBoxu a tam je přeskládává, případně zas maže apod. Takže měním v určitých situacích nastavení Color oběma komponentám (jedné na bílou, druhé na žlutou). Problém je v tom, že v případě ListBoxu se mi NĚKDY zabarví pouze přímo oblast s textem a volné místo zůstane v původní barvě. Konkrétně když uživatel klikne do oblasti ListBoxu nebo když se přepne kliknutím do TreeView. Ale když klikne na nějaké tlačítko a nastavuji to tam, barví se celý prostor tak, jak si to představuju. Nebo když si otevře uložený soubor se seznamem a obsah se načte do ListBoxu. Neptala 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ě.
Předem děkuju za jakoukoli radu.
Lenka
8
MS SQL / Re:Kde jsou data ?
« Poslední příspěvek od Delfin kdy 17-02-2018, 18:05:25 »
a ja hypotezu s izolovanymi transakcemi napsal jeste pred tim, nez poslal ukazku kodu

Vim, vim. Hodnotil jsem ;) Pro me dotazy z tohoto vlakna nedavaji moc smyslu.
9
MS SQL / Re:Kde jsou data ?
« Poslední příspěvek od pf1957 kdy 17-02-2018, 17:43:38 »
To ano, ale v prezentovanem kodu (ktery je mazanim, nechapu proc) je jen jedno takove volani ;)
Ve slovnim popisu ma "...Do tabulky vložím několik záznamů..." a ja hypotezu s izolovanymi transakcemi napsal jeste pred tim, nez poslal ukazku kodu

Citace
A popis taky nedava smysl. Pokud OP prida vice zaznamu s autocommit ExecSQL, pak se do DBMS vlozi zadny, vsechny nebo jen nektere. Kdyz pak zaznam smaze, objevi se jeden z pridanych. To zkratka nedava smysl.
Nicmene neviditelnost dat je typickym projevem operaci spoustenych ve vzajemne izolovanych transakci, ale pravdou je, ze pokud by pracoval v rezimu AutoCommit, tak by k tomu nemelo dojit, protoze vsechna data by mela byt commitnuta a read transakce by na ne mela videt. Ovsem vete "...Když dám pak SELECT * FROM... " rozumim tak, ze v nejakem toolu napr. v MS Management studiu zadam query a ono se to chova tak, jak je popsano.
10
MS SQL / Re:Kde jsou data ?
« Poslední příspěvek od Delfin kdy 17-02-2018, 17:42:33 »
Jen pridam, ze pokud bys chtel real time refresh, mohl by ses podivat na TFDEventAlerter.
Stran: [1] 2 3 ... 10