Anonymní profil Tomáš – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Anonymní profil Tomáš – Programujte.comAnonymní profil Tomáš – Programujte.com

 

Příspěvky odeslané z IP adresy 188.175.140.–

PHP › Získávání sub objektů z obje…
10. 6. 2014   #190970

Tak nakonec to udělám asi následovně:

define('INS_ALL', '0x01');
define('INS_CTG', '0x02');
define('INS_AUTHOR', '0x03');

foo($flags)
{
   //
}

// a zavolám

foo( INS_ALL );
foo( INS_CTG | INS_AUTHOR );

Pokud by jste měli lepší nápad / řešení tak mi ho sem prosím napiště (označím to jako vyřešené :) )

PHP › Získávání sub objektů z obje…
10. 6. 2014   #190968

Dobrý den, nejsem žádný PHP expert a proto bych potřeboval poradit, nebo aspoň nasměrovat jak co nejelegantněji vyřešit můj problém.

Dejme tomu, že mám nějaký článek v databázi, ten článek má autora, kategorii a další nepodstatné věci. Článek je reprezentován objektem Article kde je autor a kategorie zapsané jako číslo. Taktéž ale obsahuje objekt authorObject a categoryObject. Tyto objekty jsou vlastně reprezentace uživatele a kategorie místo čísla, jako objekt. Tzn můžu volat takto

$myArticle = $factory->getByID(2);
print($myArticle->author->info->name);
print($myArticle->author->mail);
print($myArticle->category->name);

a tak podobně... myslím, že je to jasné.

Teď ale k mému problému. Bude nastávat hodně případů, kdy ty objekty (autor, kategorie) tam chtít nebudu (nebudu je využívat), tak proč bych je tahal z databáze zbytečně? Přemýšlel jsem, že bych to mohl vyřešit hned v získávání objektu pomocí metody "getByID" tímto stylem.

public function getByID($id = int, [$category], [$author]){
    // podle toho jestli $author nebo $category není null
    // tak se budou vracet ty instance
    // pokud null budou oba, tak se samozřejmě vrátí jen holý objekt článku bez sub objektů
}

Jak už jsem psal, nejsem velký znalec PHP... ale příjde mi to jako prasárna tohle se mi rozhodně nelíbí

$article = $factory->getByID(2, true, true); 
$article = $factory->getByID(2, false, true); // fuj

Nebyl by jednodušší způsob? Musím psát parametr 2 i když ho nechci.

Představoval bych si to nějak takto? 

$article = $factory->getByID(2, INS_CATEGORY | INS_AUTHOR);
// <- chci oba
$article = $factory->getByID(2, INS_AUTHOR);
// <- chci jen autora
$article = $factory->getByID(2, INS_CATEGORY);
// <- pouze kategorie

Nevím jestli toto PHP vůbec podporuje a doufám, že jste mě pochopili. Předem díky za každou odpověď!

.NET › Pole objektov
31. 1. 2013   #170950

#1 Tayson
ježiš :D zkus to přes list... něco malinkýho jsem ti napsal ( je to prasečina ) ale snad to z toho dobře pochopíš.. zkus použit list.

// main.cs
using System;
using System.Collections.Generic;
using System.Text;

namespace OOpblbost
{
    class Program
    {
        static void Main(string[] args)
        {
            Uzivatele uziv = new Uzivatele();
            List<string> uzivatele = new List<string>();

            string
                jmeno,
                prijmeni;

            uziv.ZjistiJmeno(out jmeno);
            uziv.ZjistiPrijmeni(out prijmeni);
            uzivatele.Add(jmeno + ";" + prijmeni + ";");
            Console.WriteLine(uzivatele[0]); // vypise "Karel;Novak;"
            // chci zjistit jen jmeno nebo jen prijmeni
            string[] Split = uzivatele[0].Split(';');
            Console.WriteLine("jmeno = " + Split[0]); // vypise jmeno
            Console.WriteLine("Prijmeni = " + Split[1]); // vypise prijmeni
        }
    }
}

no a pak třída kde zjistíš ty jmena atd..

using System;
using System.Collections.Generic;
using System.Text;

namespace OOpblbost
{
    class Uzivatele
    {
        public void ZjistiJmeno(out string jmeno)
        {
            jmeno = "Karel";
        }

        public void ZjistiPrijmeni(out string prijmeni)
        {
            prijmeni = "Novák";
        }
    }
}

pokud budeš chtít projet tim listem .. nepoužívej žádný for (int i = 0 ; i < 50000000; i ++); to je největší blbost.. uděláš jen:

foreach(string i in uzivatele)
     Console.WriteLine(i);

a tohle ti vypíše všechny uživatele a jejich jména příjmení a tyhle blbosti..

Winitrix

.NET › ListView non clickable backg…
24. 1. 2013   #170659

fixed ;)

// drawitem
if (e.Item.Index == lastIndex) // ++
if (e.Item.Selected == true) // --
/++
private void ServerList_ItemSelectionChanged(object sender, ListViewItemSelectionChangedEventArgs e)
        {
            lastIndex = e.ItemIndex;
        }
.NET › ListView non clickable backg…
23. 1. 2013   #170606

Hoj, chtěl bych se zeptat, jakým způsobem se dá udělat listview, v kterém nejde kliknout na pozadí? Já potřebuju mít vždy označený item, ale pokud kliknu někam jinam než na item v listviewu tak nemám žádný selectnutý item a to je ten problém.. nevěděl by někdo jak na to? Předem díky Tomáš.

.NET › Listview DrawItem ( opacity )
22. 1. 2013   #170543

Ahoj, vykresluju si sám ListView pomocí metody DrawItem... a potřeboval bych nějakým způsobem udělat aby celý ListView měl opacity asi 80%. Předem díky za každou radu. 

private void ServerList_DrawItem(object sender, DrawListViewItemEventArgs e)
        {
            // tady jsem zkoušel transparent e.Graphics.Clear(Color.Transparent);
            Bitmap MyIcon = global::Soulwell___Realmlist_modifer.Properties.Resources.off;
            if (e.Item.Selected == true) // tady si kreslím selected item
            {
                ServerList.ForeColor = Color.FromArgb(50, 146, 242); // blue text color
                SolidBrush ItemColor = new SolidBrush(Color.FromArgb(51, 51, 51)); // gray ( 51, 51, 51) background color
                Color BorderColor = Color.FromArgb(51, 102, 153); // blue ( 51, 102, 153 ) border color
                e.Graphics.FillRectangle(ItemColor, e.Bounds.X, e.Bounds.Y, (float)210, e.Bounds.Height - 1); // active border
                e.Graphics.DrawRectangle(new Pen(BorderColor), e.Bounds.X, e.Bounds.Y, (float)209, e.Bounds.Height - 1); // normal border
                e.DrawText();
            }
            else
                e.DrawText(); // tady je item bez selectu

            if (Connection[e.ItemIndex] == "test")
                MyIcon = global::Soulwell___Realmlist_modifer.Properties.Resources.off; // kdyz je server off...

            else
                MyIcon = global::Soulwell___Realmlist_modifer.Properties.Resources.on;// kdyz je server on...
            e.Graphics.DrawImage(MyIcon, e.Bounds.Left + 190, e.Bounds.Top + 8, 10, 10); // vykresli obrazek
        }
Tomáš
.NET › ListView Transparent BackCol…
19. 1. 2013   #170365

achjo mám tu topic celý den abych se s tím nemusel tolik piplat a někdo mi poradil co dělám špatně :D nakonec si človek všechno musí vyřešít sám :( -> fixed kdyby někdo potřeboval

private void ServerList_DrawItem(object sender, DrawListViewItemEventArgs e)
        {
            if (e.ItemIndex == -1) return;
            Graphics g = e.Graphics;
            Font font = ServerList.Font;
            if (e.Item.Selected == true)
            { 
                e.DrawBackground(); // new background ( item is online )
                e.Graphics.FillRectangle(Brushes.Black, e.Bounds.X, e.Bounds.Y, e.Bounds.Width + 200, e.Bounds.Height - 1); // border
                ServerList.ForeColor = Color.FromArgb(50, 146, 242); // blue text color
            }
            else
            {
                e.DrawBackground(); // new background ( item is offline )
                e.Graphics.FillRectangle(Brushes.Transparent, e.Bounds.X, e.Bounds.Y, e.Bounds.Width + 200, e.Bounds.Height - 1);
            }
            e.DrawText();
            Bitmap MyIcon = global::Soulwell___Realmlist_modifer.Properties.Resources.on;
            e.Graphics.DrawImage(MyIcon, e.Bounds.Left + 190, e.Bounds.Top + 8, 10, 10);
            MyIcon.Dispose();
        }
Tomáš
.NET › ListView Transparent BackCol…
19. 1. 2013   #170355

Malá nápověda :)

private void ServerList_DrawItem(object sender, DrawListViewItemEventArgs e)
        {
            if (e.ItemIndex == -1) return;
            float BorderWidth = 210;
            using (Brush textBrush = new SolidBrush(Color.White))
            {
                Brush TextColor = Brushes.Black;
                Brush SelectedTextColor = Brushes.Blue;
                Font font = ServerList.Font;
                // border
                if (e.Item.Selected == true)
                {
                    // border
                    e.Graphics.FillRectangle(Brushes.Black, e.Bounds.X, e.Bounds.Y, BorderWidth, e.Bounds.Height - 1);
                    e.Graphics.DrawRectangle(new Pen(Brushes.Black), e.Bounds.X, e.Bounds.Y, BorderWidth - 1, e.Bounds.Height - 1);
                }
                else if (e.Item.Selected == false)
                {
                    e.Graphics.FillRectangle(Brushes.White, e.Bounds.X, e.Bounds.Y, BorderWidth, e.Bounds.Height - 1);
                    e.Graphics.DrawRectangle(new Pen(Brushes.White), e.Bounds.X, e.Bounds.Y, BorderWidth - 1, e.Bounds.Height - 1);
                }
                e.Graphics.DrawString(e.Item.Text, font, SelectedTextColor, e.Bounds.Left, e.Bounds.Top + 1);
            }
        }

Udělal jsem to takhle :) označené itemy jsou v pohode ale když preskočím na jiný item tak tam půla toho rámečku zůstane :) ví někdo proč? :(

Tomáš
.NET › ListView Transparent BackCol…
19. 1. 2013   #170341

Zdravím dělám si aplikaci, v které používám listview. Bohužel nastal problém, design celého okna je můj a ten listview se do toho vůbec nehodí. Potřeboval bych nějakým způsobem změnit opacity nebo nastavit transparent na asi 70% aby ten listview byl vlastně průhledný, ale vůbec nevím jak na to ... na google jsem hledal a hledal ale nic pádního jsem nenašel. A ještě mám problém u selected itemů ( vlastně to zvíraznění po kliknutí myší ) mám tam takovou hnusnou defaultní modrou což se mi tam vůbec nehodí a po kliknutí na item se zvírazní jen text a obrázek vedle něj... já bych potřeboval zvíraznit celý řádek ale i přes to že mám 

FullRowSelect = true;

se vůbec nic neděje.. úplně nejlepší bylo kdybych si mohl udělat design toho zvíraznění pomocí nějakého vlastního obrázku. Předem děkuju za každou odpověď.

Tomáš

 

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý